gpt4 book ai didi

c# - Resharper,foreach 循环中的 linq

转载 作者:行者123 更新时间:2023-11-30 13:19:16 25 4
gpt4 key购买 nike

Resharper 建议使用顶部示例,而不是底部示例。然而,我的印象是将首先创建一个新的项目列表,因此所有 _executeFuncs 将在调用 runstoredprocedure 之前运行。

这通常不是问题,但是很容易发生异常,如果我的假设是正确的,那么尽管函数已经运行,我的数据库也不会更新??

foreach (var result in rows.Select(row => _executeFunc(row)))
{
RunStoredProcedure(result)
}

或者

 foreach(var row in rows)
{
var result = _executeFunc(row);
RunStoredProcedure(result);
}

最佳答案

在这种情况下,语句在语义上与 Select(和一般的 linq)使用委托(delegate)的延迟执行相同。在结果具体化之前,它不会运行任何声明的查询,并且根据您编写该查询的方式,它会按正确的顺序执行。

一个非常简单的例子来说明:

var list = new List<string>{"hello", "world", "example"};

Func<string, string> func = (s) => {
Console.WriteLine(s);
return s.ToUpper();
};

foreach(var item in list.Select(i => func(i)))
{
Console.WriteLine(item);
}

结果

hello
HELLO
world
WORLD
example
EXAMPLE

关于c# - Resharper,foreach 循环中的 linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27042135/

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