LINQ to SQL クエリ
LINQ to SQL クエリは、LINQ クエリと同じ構文を使用して定義します。 異なる点は、クエリ内で参照されるオブジェクトがデータベース内の要素に割り当てられるという点だけです。 詳細については、「LINQ クエリの概要 (C#)」を参照してください。
LINQ to SQL は、作成したクエリを同等の SQL クエリに変換し、それをサーバーに送って処理します。具体的には、アプリケーションが、LINQ to SQL API を使用してクエリの実行を要求します。 次に、LINQ to SQL プロバイダーがクエリを SQL テキストに変換し、ADO プロバイダーに実行を委任します。ADO プロバイダーは、クエリの結果を DataReader として返します。 LINQ to SQL プロバイダーは、ADO の結果をユーザー オブジェクトの IQueryable コレクションに変換します。
この一般的な流れを次の図に示します。
クエリ実行の図
メモ |
---|
.NET Framework 組み込み型のほとんどのメソッドと演算子には、SQL に直接対応する変換が用意されています。LINQ で変換できないものについては、ランタイム例外が発生します。詳細については、「SQL と CLR の型マッピング (LINQ to SQL)」を参照してください。 |
次の表は、LINQ クエリの項目と LINQ to SQL クエリの項目の類似点と相違点を示すものです。
項目 |
LINQ クエリ |
LINQ to SQL クエリ |
---|---|---|
クエリを保持するローカル変数の戻り値の型 (シーケンスを返すクエリの場合) |
ジェネリック IEnumerable |
ジェネリック IQueryable |
データ ソースの指定 |
From (Visual Basic) 句または from (C#) 句を使用 |
同 |
フィルター処理 |
Where/where 句を使用 |
同 |
グループ化 |
Group…By/groupby 句を使用 |
同 |
選択 (投影) |
Select/select 句を使用 |
同 |
遅延実行と即時実行 |
LINQ クエリの概要 (C#) を参照してください。 |
同 |
結合の実装 |
Join/join 句を使用 |
Join/join 句を使用できますが、AssociationAttribute 属性を使用する方が効果的です。 詳細については、「リレーションシップを介したクエリの実行 (LINQ to SQL)」を参照してください。 |
リモート実行とローカル実行 |
|
詳細については、「クエリのリモート実行とローカル実行 (LINQ to SQL)」を参照してください。 |
ストリーミングとキャッシュ クエリ |
ローカル メモリ シナリオでは適用なし |
|