C# Language
IQueryableインターフェイス
サーチ…
LINQクエリをSQLクエリに変換する
IQueryable
およびIQueryable<T>
インターフェイスを使用すると、開発者はLINQクエリ(「言語統合」クエリ)を特定のデータソース(リレーショナルデータベースなど)に変換できます。 C#で書かれたこのLINQクエリを取る:
var query = from book in books
where book.Author == "Stephen King"
select book;
変数books
がIQueryable<Book>
を実装する型である場合、上記のクエリは、コードの構造を反映するデータ構造である式ツリーの形式でプロバイダ( IQueryable.Provider
プロパティで設定)に渡されます。
プロバイダは、実行時に式ツリーを検査して以下を決定できます。
-
Book
クラスのAuthor
プロパティの述語があること。 - 比較メソッドが 'equals'(
==
)であること。 - それと同等の価値が
"Stephen King"
。
この情報を使用すると、プロバイダは実行時にC#クエリをSQLクエリに変換し、そのクエリをリレーショナルデータベースに渡して、述語と一致する書籍のみを取得できます。
select *
from Books
where Author = 'Stephen King'
query
変数が反復処理されると、プロバイダが呼び出されquery
( IQueryable
はIEnumerable
実装しIEnumerable
)。
(この例で使用されるプロバイダは、クエリするテーブルを知り、C#クラスのプロパティをテーブルの列に一致させる方法を知るためにいくつかの追加のメタデータが必要ですが、そのようなメタデータはIQueryable
インターフェイスの範囲外です)。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow