203

LINQ to Entities と LINQ to Objects の最初の実装IQueryableと 2 番目の実装のいくつかの違いを知ってIEnumerableおり、質問の範囲は EF 5 内にあります。

私の質問は、これら 3 つの方法の技術的な違いは何ですか? 多くの状況で、それらすべてが機能することがわかります。のようにそれらを組み合わせて使用​​することも見られます.ToList().AsQueryable()

  1. これらのメソッドは正確には何を意味するのでしょうか?

  2. パフォーマンスの問題や、一方を他方に使用することにつながる何かはありますか?

  3. たとえば、.ToList().AsQueryable()代わりに? を使用するのはなぜ.AsQueryable()ですか?

4

4 に答える 4

15

ToList() はメモリ内のすべてになり、それから作業します。そのため、 ToList().where ( apply some filter ) はローカルで実行されます。AsQueryable() はすべてをリモートで実行します。つまり、そのフィルタが適用のためにデータベースに送信されます。Queryable は、実行するまで何もしません。ただし、ToList はすぐに実行されます。

また、この回答を見てくださいWhy use AsQueryable() instead of List()? .

編集: また、あなたの場合、ToList() を実行すると、その後のすべての操作は AsQueryable() を含めてローカルになります。ローカルで実行を開始すると、リモートに切り替えることはできません。これにより、もう少し明確になることを願っています。

于 2013-07-31T11:07:51.367 に答える