C#List <T> lambda查找然后修改元素

One*_*way 2 c# lambda generic-list

我将如何使用lambda使用List执行此操作

List<Foo> list....// create and add a bunch of Foo
int seconds = 100;

list.FindAll(x=>(x.Seconds == 0).Seconds = seconds) // yes I know that wont work...
Run Code Online (Sandbox Code Playgroud)

换句话说,找到Seconds == 0的所有foo对象并将值更改为我的局部变量...

我不想循环列表...我相信有一种方法可以用一个简单的lambda方法来做到这一点......

任何帮助赞赏

单程

Jon*_*eet 10

好吧,你可以这样做:

list.FindAll(x => x.Seconds == 0)
    .ForEach(x => x.Seconds = seconds);
Run Code Online (Sandbox Code Playgroud)

就个人而言,我更喜欢旁边效果部分的显式循环:

foreach (var x in list.Where(x => x.Seconds == 0))
{
    x.Seconds = seconds;
}
Run Code Online (Sandbox Code Playgroud)

(顺便提一下,我假设这是一个引用类型.如果它是一个值类型,那么为什么它不起作用会有各种其他原因.)

编辑:您可能希望看看Eric Lippert对此事的看法.