为什么更喜欢在IEnumerable上使用linq on IQueryable over linq?

Ela*_*nda 4 .net c# ienumerable iqueryable

我知道我可以在实现IQueryable或IEnumerable的集合上使用linq语法.

IQueryable是否使用延迟的calaulation和优化,而IEnumerable不是吗?

优化是否包括重新排序查询?

Bro*_*ass 9

Linq on an IEnumerable正在使用Linq to Objects - Linq on IQueryableis正在使用查询提供程序为标准查询运算符实现的任何内容.

对于像Linq to SQL和Entity Framework这样的ORM,即这意味着将Linq查询转换为数据库上相应的SQL查询 - 对数据库进行过滤等比将所有数据移动到内存中更为可取,因为它将具有更好的性能.