LINQ to Entities でのクエリ
クエリは、データ ソースからデータを取得する式です。 一般に、クエリは専用のクエリ言語で表現されます。たとえば、リレーショナル データベースであれば SQL、XML であれば XQuery が使用されます。 そのため、開発者はクエリの対象となるデータ ソースやデータ形式ごとに新しいクエリ言語を習得する必要があります。 統合言語クエリ (LINQ) は、データ ソースや形式の違いを意識することなくデータを扱うことのできる、より簡素化された一貫したモデルを提供します。 LINQ クエリでは、常にプログラミング オブジェクトを操作することになります。
LINQ のクエリ操作は、データ ソースを取得し、クエリを作成して、クエリを実行するという 3 つのアクションから成ります。
LINQ を介したクエリは、IEnumerable<T> ジェネリック インターフェイスまたは IQueryable<T> ジェネリック インターフェイスを実装するデータ ソースに対して行うことができます。 ジェネリック インターフェイス IQueryable<T> が実装されているジェネリック クラス ObjectQuery<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)」をご覧ください。 クエリ式構文の使用方法を示す例については、次のトピックを参照してください。
メソッド ベースのクエリ構文
LINQ to Entities クエリを作成するもう 1 つの方法として、メソッド ベースのクエリがあります。 メソッド ベースのクエリ構文は、LINQ の演算子メソッドに対する直接メソッド呼び出しのシーケンスであり、パラメーターとしてラムダ式を渡します。 詳細については、「ラムダ式」を参照してください。 メソッドベースの構文の使用方法を示す例については、次のトピックを参照してください。