2010-12-31 7 views
1

、そして与えられた:右、LINQとIQueryableインターフェイスを直接使用するクエリの違いは? Entity Frameworkの4を使用して

ObjectSet<Thing> AllThings = Context.CreateObjectSet<Thing>; 

public IQueryable<Thing> ByNameA(String name) 
{ 
    IQueryable<Thing> query = from o in AllThings 
           where o.Name == name 
           select o; 
    return query; 
} 

public IQueryable<Thing> ByNameB(String name) 
{ 
    return AllThings.Where((o) => o.Name == name); 
} 

は両方のIQueryable <>インスタンスを返し、ToList()のようなものが呼び出されるまで、このようにクエリがサーバーにヒットしないのですか?それは純粋に読みやすさの違いか、バックエンドの根本的に異なる技術を使用しているのでしょうか?

答えて

1

これらはほぼ同じコードにコンパイルされます。

最初の構文は、コンパイラによって、2番目の構文で提供される名前のメソッドに直接変換されます。

これらの2つの方法の主な違いは、実際には異なる構文を使用していることと、結果を直接返す代わりに一時変数(クエリ)に割り当てることだけです。しかし、それらはすべての実用的な目的のために同一である。

+0

ご迷惑をおかけして申し訳ございませんが、ご了承ください。 – JohnMetta

関連する問題