LINQ-是Where(谓词)。FirstOrDefault()与FirstOrDefault(谓词)相同
我总是在Where子句中使用谓词编写LINQ查询,后跟FirstOrDefault子句。我开始在FirstOrDefault子句中看到谓词示例 一个比另一个好吗?EF(SQL)的答案会不同吗 A.使用Where子句LINQ-是Where(谓词)。FirstOrDefault()与FirstOrDefault(谓词)相同,linq,Linq,我总是在Where子句中使用谓词编写LINQ查询,后跟FirstOrDefault子句。我开始在FirstOrDefault子句中看到谓词示例 一个比另一个好吗?EF(SQL)的答案会不同吗 A.使用Where子句 List<Product> products = GetProductList(); Product productWhere = products.Where(p => p.ProductID == 789).FirstOrDefault(); List&
List<Product> products = GetProductList();
Product productWhere = products.Where(p => p.ProductID == 789).FirstOrDefault();
List<Product> products = GetProductList();
Product productNoWhere = products.FirstOrDefault(p => p.ProductID == 789);
List products=GetProductList();
Product productWhere=products.Where(p=>p.ProductID==789).FirstOrDefault();
B.无何处条款
List<Product> products = GetProductList();
Product productWhere = products.Where(p => p.ProductID == 789).FirstOrDefault();
List<Product> products = GetProductList();
Product productNoWhere = products.FirstOrDefault(p => p.ProductID == 789);
List products=GetProductList();
productNoWhere=products.FirstOrDefault(p=>p.ProductID==789);
因为Linq中的方法链是惰性评估的,所以两者之间不应有任何实质性差异
Where.FirstOrDefault
在获得值时将停止执行,就像FirstOrDefault(谓词)
将停止执行一样
换句话说,FirstOrDefault
(或者下游的任何其他Linq操作符)一次接受一个来自的项目进行评估,而不是一次接受整个列表(Linq操作符返回IEnumerable
的结果本质上是收益率返回值)
另请参见
我发现了他们行为不同的例子。如果没有WHERE子句,您可能会得到意外的结果。