言語統合クエリとは何ですか?
言語統合クエリ(LINQ)は、宣言的クエリ構文を主にC#とVB.NETの命令言語にシームレスに統合する機能を提供します。 LINQの開発は、クエリを実行するときに発生したオブジェクト指向の環境で作業している開発者の問題を解決しました。 2007年11月にMicrosoft®.Netフレームワークバージョン3.5の一部として、およびVisualStudio®コードネーム「Orcas」で紹介されました。
言語統合クエリの作成の前に、.NET言語はリレーショナルデータベースまたはXMLドキュメントをクエリするネイティブの方法がありませんでした。これらの言語で執筆している開発者は、それぞれSQLまたはXQueryを文字列として埋め込み、結果のデータを.NETオブジェクトに手動でマッピングする必要がありました。埋め込まれたクエリ文字列とマッピングは.NETコンパイラによって検証できず、実行時に潜在的なエラーを発見できます。
言語統合クエリの前に直面した別の問題開発者は、.NET言語が.NET OBのクエリコレクションのクエリコレクションのみであることでした。ジェクト。通常、開発者はソースコレクション全体を繰り返し、検索基準に基づいて新しい結果コレクションを構築します。開発者は、結果コレクションを構築しながらデータを変換することもできます。このアプローチは面倒でした。 C#またはVBで記述された単純な選択クエリには、少なくとも5行のコードが必要になりますが、同じクエリにはクエリ言語で1行のコードが必要です。
オブジェクト指向の環境内でのクエリの課題により、MicrosoftはLINQを作成するための推進力を与えました。 LINQは、静的タイプチェックを備えたC#またはVBでインラインで使用されるSQLを連想させるクエリ構文を提供します。 .NETコレクションをクエリするとき、ネストされたループを使用する代わりに、開発者はLINQ構文を使用してアイテムを選択してデータを変換できます。他の利点の中でも、これにより、純粋にオブジェクト指向の構文と比較して、コードの行が少なくなります。
外部dにアクセスするときATAソース、LINQ、およびサポートコンポーネント.NET言語自体内に埋め込まれたクエリ言語とデータマッピングの必要性が削除されます。データマッピングを実行するために、LINQはLINQプロバイダーと呼ばれるコンポーネントに依存します。 LINQ-to-Objectsは、LINQが.NETコレクションにアクセスできるようにするストックプロバイダーです。同様に、リレーショナルデータベースとXMLドキュメントにアクセスするプロバイダーがあります。これらのプロバイダーのほとんどは、.NETフレームワークに含まれていないサードパーティコンポーネントです。使用するプロバイダーに関係なく、すべてのクエリは同じLinq構文を使用します。
言語統合クエリの構文とプロバイダーは、LINQ施設の一部として.NETフレームワークに追加されたクエリオペレーターのライブラリです。これらのオペレーターは、フィルタリング、順序付け、理論操作の設定、集約などのタスクを実行します。これらの演算子は.NETフレームワークの一部であるため、開発者が選択した場合、LINQなしで使用することもできます。