gpt4 book ai didi

c# - Linq 延迟操作

转载 作者:太空狗 更新时间:2023-10-29 22:37:48 25 4
gpt4 key购买 nike

我基本上理解延迟执行,但我有一个关于特定情况的问题:

给定一个代码片段,例如

                        var resultsOfInterest = from r in ...
select r;
foreach (var x in resultsOfInterest)
{
//do something with x
}

查询 resultsOfInterest 执行了多少次?在设置 foreach 循环时一次,还是为每个元素“x”一次?用

会更有效率吗
                        foreach (var x in resultsOfInterest.ToArray())
{
//do something with x
}

?

TIA

最佳答案

它将执行一次,就在循环之前,当 GetEnumerator() 方法将在查询变量上执行时。以下是 foreach 循环的样子:

var enumerator = resultsOfInterest.GetEnumerator(); // query executed here

while(enumerator.MoveNext()) // iterating over results of query execution
{
var x = enumerator.Current;
// do something with x
}

第二个示例不会更高效,它只是将查询执行的结果存储在数组中,然后调用数组迭代器:

var enumerator = resultsOfInterest.ToArray().GetEnumerator();
// loop stays same

关于c# - Linq 延迟操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18616361/

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