ベストアンサー1
初めに、IQueryable<T>
はインターフェースを拡張するのでIEnumerable<T>
、「プレーン」でできることはすべてIEnumerable<T>
、 でも実行できますIQueryable<T>
。
IEnumerable<T>
には、 Tのシーケンスを反復処理するためにそのメソッドを呼び出すことができる をGetEnumerator()
返すメソッドがあります。Enumerator<T>
MoveNext()
特に、2 つのプロパティがあり、1 つはクエリ プロバイダー (LINQ to SQL プロバイダーなど) を指し、もうIQueryable<T>
1つは、オブジェクトを、指定されたクエリ プロバイダーが理解できる実行時にトラバース可能な抽象構文ツリーとして表すクエリ式を指しています (ほとんどの場合、例外がスローされずに LINQ to Entities プロバイダーに LINQ to SQL 式を渡すことはできません)。IEnumerable<T>
IQueryable<T>
式は、オブジェクト自体の定数式にすることも、クエリ演算子とオペランドの組み合わせのより複雑なツリーにすることもできます。クエリ プロバイダーIQueryProvider.Execute()
またはメソッドは、渡された式IQueryProvider.CreateQuery()
を使用して呼び出され、それぞれクエリ結果または別のクエリ結果が返されます。IQueryable