为什么更喜欢在 IQueryable 上使用 linq 而不是 IEnumerable 上的 linq?

发布于 2024-12-18 14:03:21 字数 132 浏览 2 评论 0原文

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

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

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

I know I can use linq syntax on collections that implement IQueryable or IEnumerable.

Does IQueryable use lazy calaulation and optimization, while IEnumerable not?

Does optimization include reordering of the queries?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

↙厌世 2024-12-25 14:03:22

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

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

Linq on an IEnumerable is using Linq to Objects - Linq on an IQueryable is using whatever the query provider has implemented for the standard query operators.

For ORMs like Linq to SQL and Entity Framework i.e. that means translating your Linq query into the corresponding SQL query on the database - filtering etc. on the database is much preferred to moving all that data into memory as it will have much better performance.

眉黛浅 2024-12-25 14:03:22

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

IQueryable 和 IEnumerable 都具有延迟执行。
接口 IQueryable:IEnumerable...

No, IQueryable is typically supported by database-oriented providers and supports translation to SQL.
Any optimizations would be due to the SQL engine.

Both IQueryable and IEnumerable have deferred execution.
interface IQueryable<T> : IEnumerable<T> ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文