gpt4 book ai didi

LINQ - Where(Predicate).FirstOrDefault() 是否与 FirstOrDefault(Predicate) 相同

转载 作者:行者123 更新时间:2023-12-01 05:08:48 26 4
gpt4 key购买 nike

我一直在编写我的 LINQ 查询时使用 Where 子句中的谓词,后跟 FirstOrDefault 子句。我开始在 FirstOrDefault 子句中看到带有谓词的示例。

这个比那个好吗? EF (SQL) 的答案会有所不同吗?

A. 使用 Where 子句

List<Product> products = GetProductList(); 

Product productWhere = products.Where(p => p.ProductID == 789).FirstOrDefault();

B. 无地点条款
List<Product> products = GetProductList(); 

Product productNoWhere = products.FirstOrDefault(p => p.ProductID == 789);

https://code.msdn.microsoft.com/LINQ-Element-Operators-0f3f12ce

最佳答案

因为 Linq 中的方法链是惰性求值的,所以两者之间应该没有任何实质性的区别。 Where.FirstOrDefault获取到值就会停止执行,就像FirstOrDefault(Predicate)将要。
换句话说,FirstOrDefault (或任何其他下游的 Linq 运算符,就此而言)一次接受来自 Where 的项目。用于评估,而不是一次整个列表(返回 IEnumerable 的 Linq 运算符的结果本质上是一个 yield return 引擎盖下)。
另请参阅
Where.FirstOrDefault vs FirstOrDefault

关于LINQ - Where(Predicate).FirstOrDefault() 是否与 FirstOrDefault(Predicate) 相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26491152/

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