LINQ(source)は、コミュニティで広く称賛されている上に、習得しやすい。VLinqおよびLINQpadの2つのツールが、LINQ構文をより深く理解できるように開発者を支援している。
Visual LINQ Query Builder(VLinq)は、MicrosoftフランスのインターンがMicrosoft Corporationと共同して開発したアカデミックプロジェクトである。Microsoftフランスのマネージャー兼プロジェクトリーダーであるフルタ ミツル氏(source)は、自身の発表の場(source)でプロジェクト目標について次のように説明している。
VLinqプロジェクトはデザイナとして、LINQ to SQLクエリをグラフィカルに作成できるよう支援しますが、私たちはそれを視覚的にコードから隠しておくことを望みました。目標は、生成コードを隠すことではなく、デザイナで見えるようにすることです。それは、古典的なデザイナとグラフィカルなインテリセンスとの混合のようなものです。
VLinqはVisual Studio 2008のアドインで、これは、Microsoft Access Query Builderに似たユーザーエクスペリエンスであり、LINQクエリを視覚的に作成可能にするデザイナを提供する。バイナリとソースコードが同梱されているVLinqプロジェクトは、MSDN Code Galleryでダウンロード(source)できる。
VLinqはVisual Studioに新しいアイテムテンプレートを追加し、選択したプロジェクト(.vlinq拡張子)内でデザイナを作成する。VLinqバッグデザイナでは、新しいクエリを作成することや既存のクエリを編集することができ、クエリデザイナでは、Class Browserからエンティティクラス(LINQ to SQLデザイナで作成)をデザインサーフェスにドラッグすることが可能だ。開発者は、これらのエンティティのクエリを作成できる。VLinqデザイナは、エンティティのプロパティについて完全な「グラフィカルなインテリセンス」を提供している。
ソリューションの構築時、VLinqはスタティックなクラスを生成する。これは、DataContextをパラメータとして受け入れ、視覚的に設計されたクエリを実行し、対応する強く型付けされたエンティティのIQueryableオブジェクトを返すメソッドを提供する。アプリケーションコードで、開発者は単に新しいDataContext(LINQ to SQLで作成)のインスタンスを作成し、それらの「クエリ」メソッドを呼び出すだけだ。したがって、スタティックな「クエリ」クラスは、プロジェクトのLINQクエリのコンテナとして役割を果たす。詳細については、ハウツービデオまたはクイックリファレンス(source)で確認できる。
また、VLinqは、設計時にデータベースに対してデザイナ内で構築されたクエリを発行可能にするプレビューモードを提供するため、クエリをテストするのに役立つ。プレビューモードでクエリを発行するには、VLinqデザイナプロパティでデータベースの接続文字列を設定する必要がある。プレビューは、次の3つのビューを提供する。クエリ結果、LINQ to SQL SQL文、およびVLinqによる生成コードの3つである。
LINQPad(サイト・英語)は非常に異なったアプローチをとる。これは、the C# 3.0 in a Nutshel(サイト・英語))lブックに対するアドオンとしてJoseph Albahari氏が開発したフリーツールである。
LINQPadはスタンドアロンのアプリケーションであり、Visual Studioを必要とせず、インストールの必要がなく、自己更新型であり、次のようにいくつかの方法で使用することができる。
- SQL Management Studioクエリエディタ(または類似のクエリツール)の代用: 「現代のクエリ言語LINQでインタラクティブにSQLデータベースへのクエリを実行する」
- LINQインタプリタ: LINQクエリおよび新しいC# 3.0言語機能を試す; 「LINQと関数型プログラミングのクールさを経験する」
- Code Snippet IDE: コードスニペットを作成および管理する。コードスニペットはLINQPad内で即座に実行される可能性がある。
LINQPadホームページによると、LINQPadについて次のように記載されている。
... C# 3.0およびFramework 3.5で次のすべてをサポートしています。
- LINQ to SQL
- LINQ to Objects
- LINQ to XML
LINQPadは、LINQの学習用として優れたツールでもあり、[the C# 3.0 in a Nutshellブック]からの200ものサンプルがあらかじめ組み込まれています。
例として、ツールやLINQのさまざまな使用方法のマニュアルがある。LINQPadでは、新しいデータベースの作成やデータベース接続の保存が可能で、それらは左側のツリービューに表示される。サンプルにはこれらのデータベースでデモテーブルを作成するためのコードが含まれている。クエリごとに接続データが保存されるため、クエリが再び開かれるたび、接続データが接続ツリーに再表示されることが保証される。
LINQPadはユーザーのホームディレクトリ内のフォルダ構造にクエリを保存する。したがって、コードスニペット(クエリ)を任意にグループ化することができる。
どのクエリも即座に実行、編集、拡張、再実行できる。クエリは単一の文に限られていない。任意の量の文で構成できる。ソースの全ステップの結果表示をサポートするために、LINQPadはDump()という拡張メソッドを提供している。Dump()は出力ビューでクエリ結果をダンプする。ダンプは呼び出し元のオブジェクトを返し、メッセージチェーン内でDump()を使用できるようにし、LINQクエリの全段階の結果をダンプする。
出力ビューは、結果、メソッドベースのクエリ、および生成されたSQL文の間で切り換え可能である。「ラムダ」ボタンは、linqクエリ式がどのようにメソッドベースのクエリに解決されたかを表示するビューに切り替える。「SQL」ボタンは、LINQ to SQLの使用時に、生成されたSQL文を表示する。
LINQPadも拡張可能である。高度なプロパティでは、さらなるアセンブリと名前空間を追加およびインポートできる。これにより、LINQPad内で独自のクラスおよび拡張メソッドを使用することが可能である!
LINQPadは現行リリースではインテリセンスをサポートしていませんが、今後のリリースではそれを最優先事項としている。
どちらのツールも、LINQについて理解を深める際に価値のある資産である。VLinqは、ビジュアルデザイナに慣れている、Visual StudioおよびLINQ to SQLを使用する開発者をサポートする。LINQPadは、F5を押してサンプルアプリケーションを実行する必要なく、LINQのあらゆる秘訣を探りたい人にとても役に立つツールである。