Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:有没有办法使用lambda表达式设置集合中对象的属性?_C#_.net_Lambda - Fatal编程技术网

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

C#:有没有办法使用lambda表达式设置集合中对象的属性?,c#,.net,lambda,C#,.net,Lambda,我正在开发一个小项目,我想我可以尝试一些我不知道的东西,这样我可以学到一些新的东西。 我有一个消息集,叫做MSG。我想只过滤未读的,然后设置为“读”。 为此,我用这个lambda表达式调用了Where方法,我想我会得到一个所有未读消息的列表。现在我想将该值设置为“Read”(将'T'分配给MessageRead属性)。有没有办法使用lambda表达式来实现这一点 我得到了这段代码,但是“All”方法不是我想要的,我刚刚发现它检查列表中的所有元素是否都符合这个条件 msgs.Where(messa

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

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

msgs.Where(message => message.MessageRead == 'F').All(message => message.MessageRead = 'T');
非常感谢,
Oscar

您所追求的是一种ForEach扩展方法,请参见此处的讨论:

事实上,如果有这样一种方法,它将不会比常规的ForEach语句有任何好处


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

foreach语句有什么问题?它正是您所需要的:

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

太棒了!谢谢你的帮助!你太快了,我要等10分钟才能接受你的回答,我会尽快给你打分!是的,我知道。在这种情况下,我这样做不是因为它更好,而是因为我想学习它。:)是的。但问题是我已经知道这个了。我想学习新东西,以便在需要时能够使用它们;)@奥斯卡:很公平,虽然学习过程的一部分是发现在不同的场景中合适的技术是什么。“如何使用手机打开啤酒瓶?”的正确答案几乎总是“不要使用手机,使用开瓶器”。嗨!这是真的,但我认为我们可以在不一定需要的时候学到一些东西,但我们有时间/机会这样做,所以在未来,如果我们需要的话,我们已经知道了。不知道,也许在某个时候,剩下的只是一部手机和一瓶水:)