【发布时间】:2010-01-28 19:22:24
【问题描述】:
好的,所以我正在迭代一个集合。对于满足某些条件的每个成员,我想对该成员调用一个方法:
这是我现在的做法:
foreach(MyObject obj in myCollection)
{
if(obj.Property == theSearchValue)
obj.DoIt();
}
对于它的价值,我认为 foreach 是最易读、最清晰的方法(我们可以谈论关于花括号的要点),所以这对我来说更像是一个学术/学习问题。
问题:用 Linq 表达这一点的最佳方式是什么?有没有比我的 foreach 循环更清晰/可读/可维护的 Linqy 方法?如果是这样,它会在不牺牲性能的情况下这样做吗?
(我看到的很多 linq 操作看起来都很整洁,但它们通常会导致创建中间可枚举对象,或者有时会多次枚举集合——我的小 foreach 在 1 遍中解决了问题,没有临时已创建集合。)
【问题讨论】:
-
Justin 展示的 LINQ 版本不会创建临时集合。这是一次通行证,就像你的一样。选择你喜欢的。