C#:有没有办法使用lambda表达式设置集合中对象的属性?

JSB*_*ach 2 .net c# lambda

我正在开发一个小项目,我想我可以尝试一些我不知道的东西,这样我就可以学到新东西.我有一组消息,叫做msgs.我想只过滤未读的,然后将其设置为"读取".为此,我用这个lambda表达式调用了Where方法,我想我会得到一个未读的所有消息的列表.现在我想将值设置为"Read"(将"T"指定给MessageRead属性).有没有办法使用lambda表达式?

我得到了这个代码,但是"All"方法不是我所要求的,我只是发现它检查列表中的所有元素是否符合这个条件.

msgs.Where(message => message.MessageRead == 'F').All(message => message.MessageRead = 'T');
Run Code Online (Sandbox Code Playgroud)

非常感谢,奥斯卡

cbp*_*cbp 6

你所追求的是一个ForEach扩展方法,请参见这里的讨论:LINQ相当于foreach for IEnumerable <T>


小智 5

事实上,如果有这样一种方法,它就不会比常规的foreach声明有任何好处.

Eric Lippert(微软高级软件设计工程师)对这个主题有一个很好的概述:"foreach"vs"ForEach"