微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何用日志记录在一个衬里中编写foreach循环?

如何解决如何用日志记录在一个衬里中编写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);
}

我只是想知道是否可以通过foreach中的日志记录行在one-liner循环上方进行写。

解决方法

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

-1

不清楚您要问的是什么,但这可能是“使代码在一堆项目中的每个项目上运行,而无需使用单词dataHolder.ToList().ForEach(x => loggingService.Warn(LOG_TITLE,"Value: " + x.ClientName)); (区分大小写)”的一种方式。

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

enter image description here

ps; this question对于差异以及何时最好使用两者之间的差异进行了精彩而冗长的论述。由于您声明的目标不包含任何有关突变状态,线程安全性等方面的细节,因此我坚持使用foreach

,

尽管您想要一个一个班轮,但我认为最好将所有信息添加到一个日志消息中

var results = GetData().Select(x => "Value: " + x.ClientName);
loggingService.Warn(LOG_TITLE,string.Join(Environemnt.NewLine,results));

如果您不喜欢换行,可以使用逗号分隔。

注意:如今,我倾向于使用更现代的结构化日志记录框架,其中会将数据作为列表/结构包括在内。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。