gpt4 book ai didi

c# - 将 IQueryable 与 Linq 结合使用

转载 作者:IT王子 更新时间:2023-10-29 03:28:57 25 4
gpt4 key购买 nike

IQueryable 在 LINQ 上下文中有什么用?

是否用于开发扩展方法或任何其他目的?

最佳答案

Marc Gravell's answer非常完整,但我想我也会从用户的角度添加一些内容......


从用户的角度来看,主要区别在于,当您使用 IQueryable<T> 时(使用正确支持事物的提供者),您可以节省大量资源。

例如,如果您在使用许多 ORM 系统处理远程数据库,您可以选择以两种方式从表中获取数据,一种返回 IEnumerable<T> , 和一个返回 IQueryable<T> 的.例如,假设您有一个 Products 表,并且您想要获取所有成本超过 25 美元的产品。

如果你这样做:

 IEnumerable<Product> products = myORM.GetProducts();
var productsOver25 = products.Where(p => p.Cost >= 25.00);

这里发生的事情是,数据库加载所有产品,并将它们通过网络传递给您的程序。然后您的程序会过滤数据。本质上,数据库执行 SELECT * FROM Products ,并将所有产品退还给您。

有权利IQueryable<T>另一方面,您可以:

 IQueryable<Product> products = myORM.GetQueryableProducts();
var productsOver25 = products.Where(p => p.Cost >= 25.00);

代码看起来是一样的,不同的是执行的SQL会是SELECT * FROM Products WHERE Cost >= 25 .

从您作为开发人员的 POV 来看,这看起来是一样的。但是,从性能的角度来看,您可能只能通过网络返回 2 条记录,而不是 20,000 条....

关于c# - 将 IQueryable 与 Linq 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1578778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com