如何使用日志在一个班轮中编写 foreach 循环?

cs9*_*s98 0 c# foreach

我有一个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);
}
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有任何方法可以foreachone-liner.

Cai*_*ard 6

List 有一个 ForEach 方法,它会在它的每个元素上调用一个提供的 lambda:

dataHolder.ToList().ForEach(x => loggingService.Warn(LOG_TITLE, "Value: " + x.ClientName));
Run Code Online (Sandbox Code Playgroud)

不是很清楚你在问什么,但这可能是一种“在一堆项目中的每个项目上运行代码,而不使用这个词foreach(区分大小写)”的方法

我不确定我会使用它,因为它需要一个额外的 List 转换步骤(ForEach 是 List 的东西而不是 LINQ 的东西)什么时候foreach可以在你拥有的现有 IEnumerable 上正常工作......因此我会声称对于我最喜欢的模因之一,当您出于代码表示原因可以使用 foreach 时使用 ForEach 是一个很好的用例:

在此处输入图片说明

ps; 这个问题有一些关于差异的精彩而冗长的论述,以及何时使用一个比另一个更好。由于您声明的目标不包含任何更细微的变异状态、线程安全等,我会坚持foreach

  • 我会为那个表情包+1 (2认同)