我知道我可以在实现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> ...