【发布时间】:2011-11-28 21:14:26
【问题描述】:
我知道我可以在实现 IQueryable 或 IEnumerable 的集合上使用 linq 语法。
IQueryable 是否使用惰性计算和优化,而 IEnumerable 不使用?
优化是否包括查询的重新排序?
【问题讨论】:
标签: c# .net ienumerable iqueryable
我知道我可以在实现 IQueryable 或 IEnumerable 的集合上使用 linq 语法。
IQueryable 是否使用惰性计算和优化,而 IEnumerable 不使用?
优化是否包括查询的重新排序?
【问题讨论】:
标签: c# .net ienumerable iqueryable
IEnumerable 上的 Linq 正在使用 Linq to Objects - IQueryable 上的 Linq 正在使用 查询提供程序 为标准查询运算符实现的任何内容。
对于像 Linq to SQL 和实体框架这样的 ORM,也就是说,这意味着将您的 Linq 查询转换为数据库上的相应 SQL 查询 - 数据库上的过滤等比将所有数据移动到内存中更可取,因为它会更好性能。
【讨论】:
不,面向数据库的提供程序通常支持 IQueryable,并支持转换为 SQL。
任何优化都归功于 SQL 引擎。
IQueryable 和 IEnumerable 都已延迟执行。interface IQueryable<T> : IEnumerable<T> ...
【讨论】: