2011-12-06 6 views
0

IQueryable<T>で動作するLINQ文(つまり、Linq-to-SQLとLinq-Entities文)は、コードをデータとして表現する式ツリーオブジェクトに変換されます。コンパイル時にLinq-To-Objects文もExpression Treeオブジェクトに変換されますか?

a)IEnumerable<T>で動作するLINQ文(LINQ-to-Objects)も式ツリーに変換されますか?

b)そうでない場合、コンパイル時にLINQ-to-Objectステートメントはどうなりますか?コンパイラは単にそれらを適切なメソッド呼び出しに変換しますか?あなたは、コードを反映している場合

var results = Enumerable.Where(
        Enumerable.Select(collection, item => item.id), 
        id => id > 10 
      ); 

はあなたに

答えて

0

に感謝し、次のようなものに、コンパイラによって翻訳さ

var results = collection.Select(item => item.id).Where(id => id > 10); 

:たとえば、次のLINQのツーオブジェクトの文ですIEnumerable拡張メソッドは実際に何をしようとしているかの実装を含んでいます。式ツリーを構築したい場合は、最初にAsQueryable()拡張メソッドをチェーンして、クエリが次のようになります。

関連する問題