gpt4 book ai didi

c# - 使用 Linq 方法返回时间

转载 作者:太空宇宙 更新时间:2023-11-03 17:43:06 25 4
gpt4 key购买 nike

一个 friend 向我展示了这个 Linq 语句:

records.Where( r => r.Name == "Henry Clay" ).FirstOrDefault();

撇开 FirstOrDefault() 可以采用 lambda 的事实不谈,是否所有 Henry Clay 记录在全部转到 FirstOrDefault() 之前都检查“Henry Clay”,还是 Where 方法只返回第一个记录?

换句话说,某些 Henry Clay 记录可能永远不会传递给 FirstOrDefault 吗?

最佳答案

不,所有元素都是延迟执行的。当您按如下方式重写查询时,您可以看到这一点:

records.Where(r =>
{
Console.WriteLine(r.Name);
return r.Name == "Henry Clay";
})
.FirstOrDefault();

强制执行的结果会很不一样,例如ToArray():

records.Where(r =>
{
Console.WriteLine(r.Name);
return r.Name == "Henry Clay";
})
.ToArray()
.FirstOrDefault();

在最后一种情况下,ToArray() 将强制迭代 records 集合中的所有元素,否则,FirstOrDefault()将确保集合在 where 谓词第一次返回 true 后停止迭代。

关于c# - 使用 Linq 方法返回时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13129081/

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