.Net 4.0のC#のコンテキスト内で、IQueryable<T>
を実装する組み込みオブジェクトはありますか?
IQueryable
オブジェクトは、クエリ可能なプロバイダーによって生成されます(例:LINQ to SQL、LINQ to Entities/Entity Frameworkなど)。基本的な.NETでnew
を使用してインスタンス化できるものはほとんどありませんフレームワークはIQueryableを実装します。
IQueryable
は、クエリ可能なプロバイダーを作成するために使用するように設計されたインターフェイスです。これにより、解析可能な式ツリーを構築することにより、LINQライブラリを外部データストアに対して活用できます。本質的に、Queryableにはコンテキスト-正確に何をクエリしているかに関する情報が必要です。 new
を使用してIQueryable型を作成することは、それが可能かどうかに関係なく、それほど遠くに行くことはできません。
つまり、IEnumerable
は、AsQueryable()
拡張メソッドを使用してIQueryable
に変換できます。これは、表面的には似ていますが、機能的にveryプレーンなIEnumerable
オブジェクトに対してLINQメソッドを使用する場合とは異なり、舞台裏で異なる構成を作成します。これはおそらく、実際のIQueryableプロバイダーを設定せずにアクセスできるクエリ可能なオブジェクトの最も豊富なソースです。この切り替えは、実際のデータストアを必要とせず、それを模倣できるメモリ内データのリストだけなので、LINQベースのアルゴリズムの単体テストに非常に役立ちます。
さて、あなたの質問はちょっと変です...しかし、私は信じますReflector でインターフェースを見ると、それはロードされたアセンブリの実装者のリストを提供します。
免責事項として、私はリフレクターを有料で使用して以来使用していないので、私は間違っているかもしれません。
EntityCollection と同様に EnumerableQuery も同様です。
これらのいずれかがあなたをどこかに連れて行くとは思いません。支援するには、私たちはあなたが本当に解決しようとしていることを知る必要があります。 LINQプロバイダーを作成している場合は、次をお読みください: http://msdn.Microsoft.com/en-us/library/bb546158.aspx 。
彼らはあなた自身の実装を書くことを勧めます。