クエリは、データ ソースからデータを取得する式です。 クエリは通常、リレーショナル データベースの SQL や XML 用の XQuery など、特殊なクエリ言語で表されます。 そのため、開発者は、クエリを実行するデータ ソースまたはデータ形式の種類ごとに新しいクエリ言語を学習する必要がありました。 Language-Integrated クエリ (LINQ) は、さまざまな種類のデータ ソースと形式でデータを操作するための、よりシンプルで一貫性のあるモデルを提供します。 LINQ クエリでは、常にプログラミング オブジェクトを操作します。
LINQ クエリ操作は、データ ソースまたはソースの取得、クエリの作成、クエリの実行の 3 つのアクションで構成されます。
IEnumerable<T> ジェネリック インターフェイスまたは IQueryable<T> ジェネリック インターフェイスを実装するデータ ソースは、LINQ を使用して照会できます。 ジェネリック ObjectQuery<T> インターフェイスを実装するジェネリック IQueryable<T> クラスのインスタンスは、LINQ to Entities クエリのデータ ソースとして機能します。
ObjectQuery<T>ジェネリック クラスは、0 個以上の型指定されたオブジェクトのコレクションを返すクエリを表します。 C# キーワード var
(Visual Basic では Dim) を使用して、コンパイラがエンティティの型を推論することもできます。
クエリでは、データ ソースから取得する情報を正確に指定します。 クエリでは、情報を返す前に並べ替え、グループ化、および整形する方法を指定することもできます。 LINQ では、クエリは変数に格納されます。 クエリが一連の値を返す場合、クエリ変数自体はクエリ可能な型である必要があります。 このクエリ変数はアクションを実行せず、データを返しません。クエリ情報のみが格納されます。 クエリを作成したら、そのクエリを実行してデータを取得する必要があります。
クエリ構文
LINQ to Entities クエリは、クエリ式構文とメソッドベースのクエリ構文という 2 つの異なる構文で構成できます。 クエリ式の構文は C# 3.0 および Visual Basic 9.0 の新機能であり、Transact-SQL や XQuery と同様の宣言構文で記述された一連の句で構成されています。 ただし、.NET Framework 共通言語ランタイム (CLR) は、クエリ式の構文自体を読み取ることができません。 したがって、コンパイル時に、クエリ式は CLR が理解しているメソッド呼び出しに変換されます。 これらのメソッドは、 標準クエリ演算子と呼ばれます。 開発者は、クエリ構文を使用する代わりに、メソッド構文を使用して直接呼び出すオプションがあります。 詳細については、「LINQ の クエリ構文とメソッド構文」を参照してください。
クエリ式の構文
クエリ式は宣言型クエリ構文です。 この構文を使用すると、開発者は Transact-SQL のように書式設定された高度な言語でクエリを記述できます。 クエリ式の構文を使用すると、最小限のコードでデータ ソースに対して複雑なフィルター処理、順序付け、およびグループ化操作を実行できます。 詳細については、「 基本的なクエリ操作 (Visual Basic)」を参照してください。 クエリ式構文の使用方法を示す例については、次のトピックを参照してください。
Method-Based クエリ構文
LINQ to Entities クエリを作成するもう 1 つの方法は、メソッドベースのクエリを使用することです。 メソッド ベースのクエリ構文は、LINQ 演算子メソッドに対するダイレクト メソッド呼び出しのシーケンスであり、ラムダ式をパラメーターとして渡します。 詳細については、「 ラムダ式」を参照してください。 メソッドベースの構文の使用方法を示す例については、次のトピックを参照してください。