繁体   English   中英

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

[英]C#: is there a way to set a property of objects in a collection using lambda expression?

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

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

msgs.Where(message => message.MessageRead == 'F').All(message => message.MessageRead = 'T');

非常感谢,奥斯卡

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

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

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

foreach声明有什么问题? 它完全符合您的需求:

foreach (var msg in msgs.Where(m => m.MessageRead == 'F'))
{
    msg.MessageRead = 'T';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM