gpt4 book ai didi

c# - 另一个Linq翻译问题

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

好的,我正在迭代一个集合。对于满足某些条件的每个成员,我想对该成员调用一个方法:

这是我现在的做法:


foreach(MyObject obj in myCollection)
{
if(obj.Property == theSearchValue)
obj.DoIt();
}

就其值(value)而言,我认为 foreach 是最易读、最清晰的方法(我们可以讨论花括号的要点),所以这对我来说更像是一个学术/学习问题。

问题:使用 Linq 表达这一点的最佳方式是什么?有没有比我的 foreach 循环更清晰/可读/可维护的 Linqy 方法?如果是这样,它是否在不牺牲性能的情况下这样做?

(我看到的很多 linq 操作看起来都很整洁,但它们通常会导致创建中间枚举,或者有时会多次枚举一个集合——我的小 foreach 一次性解决了这个问题,没有临时的创建的集合。)

最佳答案

您不会从使用 LINQ 中获益太多...

var matches = myCollection.Where(i => i.Property == theSearchValue);

foreach(var item in matches)
item.DoIt();

您还可以使用扩展方法添加 Each() 方法来隐藏循环(但您不会获得效率)。生成的代码如下所示:

myCollection.Where(i => i.Property == theSearchValue).Each(i => i.DoIt());

关于c# - 另一个Linq翻译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2157287/

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