【发布时间】:2016-01-18 16:10:15
【问题描述】:
我的 工作 foreach 如下。
List<Thing> things = new List<Thing>();
foreach (Original original in originals)
things.Add(new Thing(orignal));
然后,我变聪明了,将其 LINQ 化为以下仍在工作代码。
IEnumerable<Thing> things = originals.Select(origo => new Thing(origo));
为减少行数感到非常自豪,并且我自己 LINQing 到更清晰的代码我意识到还需要更新进程表。当我们进行转换时,更新必须同时发生。所以,夹在两腿之间,感觉不那么自豪了,我回到原来的代码,添加了通知方法。
List<Thing> things = new List<Thing>();
foreach (Original original in originals)
{
things.Add(new Thing(orignal));
DoTell();
}
我的问题是,是否可以保留 LINQie 语法并且仍然能够以某种方式合并柜员。我不希望代码看起来不错,也不会以这种方式更具可读性(尽管如果是这样的话,那就太棒了)。然而,现在这是一个学术好奇心和纯粹固执的问题 - 我想知道它是否可以完成。
【问题讨论】:
-
查看以下为什么不使用 List
.ForEach 调用:blogs.msdn.com/b/ericlippert/archive/2009/05/18/…