【问题标题】:Why to prefer using linq on IQueryable over linq on IEnumerable?为什么更喜欢在 IQueryable 上使用 linq 而不是在 IEnumerable 上使用 linq?
【发布时间】:2011-11-28 21:14:26
【问题描述】:

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

IQueryable 是否使用惰性计算和优化,而 IEnumerable 不使用?

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

【问题讨论】:

    标签: c# .net ienumerable iqueryable


    【解决方案1】:

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

    对于像 Linq to SQL 和实体框架这样的 ORM,也就是说,这意味着将您的 Linq 查询转换为数据库上的相应 SQL 查询 - 数据库上的过滤等比将所有数据移动到内存中更可取,因为它会更好性能。

    【讨论】:

      【解决方案2】:

      不,面向数据库的提供程序通常支持 IQueryable,并支持转换为 SQL。
      任何优化都归功于 SQL 引擎。

      IQueryable 和 IEnumerable 都已延迟执行。
      interface IQueryable<T> : IEnumerable<T> ...

      【讨论】:

        猜你喜欢
        • 2011-04-13
        • 2012-12-08
        • 1970-01-01
        • 1970-01-01
        • 2011-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多