.NET TIPS LINQ文の挙動や生成されるSQL文を確認するには?[3.5、4、C#、VB]デジタルアドバンテージ 一色 政彦2010/04/22 |
|
|
C# 3.0以降やVisual Basic 9.0以降では、SQLライクな構文でデータのクエリを簡単に記述できるLINQ(Language INtegrated Query)という機能が搭載されている。しかし、LINQによるデータ・クエリの記述(特にSQL Serverデータベースを対象にしたLINQ)は、文字列のSQL文ではなく、ソース・ファイル中に記述されるコードとなる。そのため、クエリの実行結果を手軽に確認できない。
従来の文字列のSQL文であれば、意図した結果が返ってくるかどうかを、アプリケーションは起動せずに、Visual StudioやSQL Server Management Studioのようなクエリを発行できるツールを使って手軽に検証できた。しかしLINQ文の場合は、基本的にアプリケーションを起動して、デバッグしたり、処理結果のデータをDataGridコントロールなどに表示したりする必要がある。
このような場面では、「LINQPad」が便利だ。LINQPadは、SQL ServerやSQL Azureなどのデータベースに対して、LINQ文で記述したクエリを実行できるツールである。
●LINQPadのダウンロード
LINQPadは下記のリンクからダウンロードできる。
ここでは、無償のスタンドアロン版を利用する。上記のリンク先のサイトを訪れ、[Standalone Executable]欄内の[Download LINQPad.exe]リンクを右クリックして、リンク先のファイルをローカル環境にダウンロードする。LINQPad.exeファイルがダウンロードされるので、これを実行するとLINQPadが起動する。
なお、本稿執筆時点でダウンロードできるLINQPad.exeファイルは、.NET Framework 3.5のLINQをベースとしている。先日リリースされた.NET Framework 4で利用するには、下記のリンク先からダウンロードしてほしい。
●LINQPadの画面構成
次の画面は、LINQPadを起動した例だ。
LINQPadの起動 |
画面構成を簡単に説明しよう。
左上のツリーは、データベースである。データベースに接続するには、まず[Add connection]をクリックして、データベースを選択する。
左下のツリーは、保存されているクエリ・ファイルである。デフォルトでは、「マイ ドキュメント」配下の「LINQPad Queries」フォルダ内にある.linqファイル群がツリー表示される。.linqファイルは、LINQPadで記述したLINQ文を保存したテキスト・ファイルである。
右上のテキストボックスは、LINQ文を記述する場所であり、右下の領域にはLINQ文の実行結果が表示される。
●LINQPadの使い方
使い方は簡単。右上のテキストボックスに任意のLINQ文を書き込み、上部にある緑色の[Execute]ボタンをクリックするだけだ。
なお、テキストボックスの上にある、[Language](=言語)コンボボックスと[Database](=データベース)コンボボックスを、事前に選択しておく必要がある。それぞれの項目内容は次の画面を参考にしてほしい。基本的に[Language]は、「C# Expression」(=C#の式)もしくは「VB Expression」(=VBの式)を選択すればよい。
データベースと言語の指定 |
今回は、次のコードのような、C#の式のLINQ文を記述した。データベースは筆者独自のものである。
|
|
LINQPadでのLINQ文の記述例 | |
このLINQ文は、「statusesテーブルから、textフィールドのデータに『こんにちは』という文字列が含まれるものを、created_atフィールドのデータでソート(降順)して取得する」という意味になる。 |
このLINQ文を記入後、緑色の[Execute]ボタンでクエリ実行を行うと、次の画面のような結果が表示される。
LINQPadでのクエリの実行結果 |
以上が基本的な使い方である。
●ラムダ式を用いたメソッド形式でLINQ文への変換
上記のようにしてクエリを実行して、その結果ビューの上部にある[λ]タブをクリックすると、次の画面のようにラムダ式を用いたメソッド形式でLINQ文を表示できる。
ラムダ式を用いたメソッド形式でLINQ文への変換 |
「TIPS:LINQ文で動的にWhere句を組み立てるには?」で紹介したような動的なLINQ文を組み立てる場合には、メソッド形式のLINQ文を使う必要がある。そういったケースで、LINQ文を書き換える際には特に便利だろう。
●実行されるSQL文の確認
また、結果ビューの上部にある[SQL]タブをクリックすると、次の画面のように、内部で実行されるSQL文を表示できる。
内部で実行されるSQL文の表示 |
さらに、[IL]タブをクリックすると、中間言語(IL)コードを表示できる。
●実行したLINQ文の保存
記述したLINQ文は保存しておくことができる。メニュー・バーから[File]−[Save]を実行すると、前述した.linqファイルとして保存される。保存したファイルは、左下のツリーに表示されるので、次回起動時はそこからLINQ文を再表示できる。
●ライセンスについて
LINQPadは無償だが、右側の各ウィンドウの上部右端にある[Activate autocompletion]リンクをクリックすると、アクティベーション・コードが要求される。LINQ文を記述する際に、入力候補を表示できるようにしたい場合は、ライセンスを購入してアクティベーション・コードを受け取る必要がある。
このライセンスは(本稿執筆時点の2010年4月22日で)、シングルユーザーであれば27.50米ドルで、3つのPC+3つの仮想PCで使える。このほか、割安な10人までのマルチユーザー・ライセンスや、何人でもOKなエンタープライズ・ライセンス、200台のPCまでOKな教育ライセンスなどが用意されている。
もちろん、ほとんどの人は無償ライセンスで問題ないだろう。LINQ文の自動補完機能が必要であれば、Visual StudioでLINQ文を記述してIntelliSenseを活用すればよい。
利用可能バージョン:.NET Framework 3.5以降 利用可能バージョン:.NET Framework 4以降 カテゴリ:開発環境&ツール 処理対象:ツール カテゴリ:クラス・ライブラリ 処理対象:LINQ 関連TIPS:LINQ文で動的にWhere句を組み立てるには? |
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|