我有一个IEnumerable<>对象,我正在使用for循环进行迭代,如下所示:
IEnumerable<Process> dataHolder = GetData();
// how to write below foreach loop in one-liner?
foreach (var x in dataHolder)
{
loggingService.Warn(LOG_TITLE, "Value: " + x.ClientName);
}我只是好奇地想知道是否有任何方法可以在foreach循环上面使用one-liner中的日志记录行编写。
发布于 2020-08-13 06:23:33
List有一个ForEach方法,它将对它的每个元素调用提供的lambda:
dataHolder.ToList().ForEach(x => loggingService.Warn(LOG_TITLE, "Value: " + x.ClientName));现在还不清楚你在问什么,但这可能是一种“在一堆条目上运行代码,而不使用foreach (区分大小写的)”的方法。
不过,我不确定我是否会使用它,因为它需要一个额外的列表转换步骤(ForEach是List,而不是LINQ ),当foreach在现有的IEnumerable上正常工作时。因此,我认为,如果您可以预测代码表示的原因,那么使用ForEach是我最喜欢的模因之一的一个很好的用例:

ps;this question有一些精彩和冗长的讨论,关于差异和什么时候可能更好地使用一个而另一个。由于您声明的目标并不包括任何更好的变异状态、线程安全等点,所以我将坚持foreach
https://stackoverflow.com/questions/63389224
复制相似问题