.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文を記述した。データベースは筆者独自のものである。

from s in statuses
  where s.text.Contains("こんにちは")
  orderby s.created_at descending
  select s
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を活用すればよい。End of Article

利用可能バージョン:.NET Framework 3.5以降
利用可能バージョン:.NET Framework 4以降
カテゴリ:開発環境&ツール 処理対象:ツール
カテゴリ:クラス・ライブラリ 処理対象:LINQ
関連TIPS:LINQ文で動的にWhere句を組み立てるには?

この記事と関連性の高い別の.NET TIPS
LINQ to SQLにより生成されるSQL文を確認するには?
LINQ to SQLのログ出力をVisual Studioの[出力]ウィンドウに出力するには?
[LINQ to SQL]関連するテーブル内容を先に読み込んでおくには?
LINQ文で動的にWhere句を組み立てるには?
jQueryと「linq.js」を連携させてDOMをLINQにより処理するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH