.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文で動的にWhere句を組み立てるには?
LINQ to SQLにより生成されるSQL文を確認するには?
LINQ to SQLのログ出力をVisual Studioの[出力]ウィンドウに出力するには?
[LINQ to SQL]関連するテーブル内容を先に読み込んでおくには?
LINQ:文字列コレクションで「LIKE検索」(部分一致検索)をするには?[C#、VB]
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間