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)」を参照してください。 |
ストリーミングとキャッシュ クエリ |
ローカル メモリ シナリオでは適用なし |
|