LINQ to Entities でのクエリ
クエリは、データ ソースからデータを取得する式です。 一般に、クエリは専用のクエリ言語で表現されます。たとえば、リレーショナル データベースであれば SQL、XML であれば XQuery が使用されます。 そのため、開発者はクエリの対象となるデータ ソースやデータ形式ごとに新しいクエリ言語を習得する必要があります。 統合言語クエリ (LINQ) は、データ ソースや形式の違いを意識することなくデータを扱うことのできる、より簡素化された一貫したモデルを提供します。 LINQ クエリでは、常にプログラミング オブジェクトを操作することになります。
LINQ のクエリ操作は、データ ソースを取得し、クエリを作成して、クエリを実行するという 3 つのアクションから成ります。
LINQ を介したクエリは、IEnumerable ジェネリック インターフェイスまたは IQueryable ジェネリック インターフェイスを実装するデータ ソースに対して行うことができます。 ジェネリック IQueryable インターフェイスを実装するジェネリック ObjectQuery クラスのインスタンスは、LINQ to Entities クエリのデータ ソースとして動作します。 ObjectQuery ジェネリック クラスは、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 が理解できる形式 (メソッド呼び出し) へと変換されます。 これらのメソッドは標準クエリ演算子として知られています。 開発者は、クエリ構文を使う代わりに、メソッド構文を使ってそれらを直接呼び出すこともできます。 詳細については、「Query Syntax versus Method Syntax」を参照してください。
クエリ式の構文
クエリ式は宣言型のクエリ構文です。 開発者は、Transact-SQL に似た形式の高級言語でクエリを記述できます。 クエリ式の構文を使用することにより、フィルター、並べ替え、グループ化など、データ ソースに対するきわめて複雑な処理を最小限のコードで実行できます。 詳細については、「Basic Query Operators」を参照してください。 クエリ式構文の使用方法を示す例については、次のトピックを参照してください。
メソッド ベースのクエリ構文
LINQ to Entities クエリを作成するもう 1 つの方法として、メソッド ベースのクエリがあります。 メソッド ベースのクエリ構文は、LINQ の演算子メソッドを、ラムダ式をパラメーターとして直接順次呼び出すものです。 詳細については、「Lambda Expressions」を参照してください。 メソッドベースの構文の使用方法を示す例については、次のトピックを参照してください。
参照
概念
その他のリソース
Getting Started with LINQ in C#
Getting Started with LINQ in Visual Basic