我知道我可以在實現IQueryable或IEnumerable的集合上使用linq語法。爲什麼喜歡在IEnumerable上使用linq on linq on linq?
IQueryable使用惰性疏通和優化,而IEnumerable不使用?
優化是否包括查詢的重新排序?
我知道我可以在實現IQueryable或IEnumerable的集合上使用linq語法。爲什麼喜歡在IEnumerable上使用linq on linq on linq?
IQueryable使用惰性疏通和優化,而IEnumerable不使用?
優化是否包括查詢的重新排序?
的LINQ上IEnumerable
使用LINQ到對象。
對於像Linq to SQL和Entity Framework這樣的ORM,這意味着將您的Linq查詢翻譯爲相應的數據庫SQL查詢 - 對數據庫進行過濾等操作比將數據移動到內存中要好得多更好的性能。
不,IQueryable通常由面向數據庫的提供者支持,並且支持到SQL的轉換。
任何優化都將歸因於SQL引擎。
IQueryable和IEnumerable都延遲執行。上IQueryable
LINQ的使用無論查詢提供已經爲標準的查詢操作符來實現 -
interface IQueryable<T> : IEnumerable<T> ...