C#列表<;T>;lambda查找然后修改元素

C#列表<;T>;lambda查找然后修改元素,c#,lambda,generic-list,C#,Lambda,Generic List,我将如何使用lambda进行列表 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... List List..//创建并添加一组Foo 整数秒=100; list.FindAll(x=>(x.Seconds==0.Secon

我将如何使用lambda进行列表

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...
List List..//创建并添加一组Foo
整数秒=100;
list.FindAll(x=>(x.Seconds==0.Seconds=Seconds)//是的,我知道这行不通。。。
换句话说,找到所有秒=0的foo对象,并将值更改为我的局部变量

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

谢谢你的帮助

单向

嗯,你可以:

就我个人而言,我更喜欢对副作用部分进行显式循环:

foreach (var x in list.Where(x => x.Seconds == 0))
{
    x.Seconds = seconds;
}
(顺便说一句,我假设这是一种引用类型。如果它是一种值类型,那么它不起作用还有其他各种原因。)

编辑:您可能希望查看

我认为上述内容无法编译。

.ForEach(…)
返回不能位于
FindAll()右侧的void
method.

非常好……谢谢……在这种情况下,top方法可以工作,而且看起来是最干净的……基本上,我正在做/需要做的就是在quick move中获取秒数=0的所有项……为每个项挖掘扩展方法……谢谢在这种情况下,如果我有要修改的项的索引,我应该如何编写它?
foreach (var x in list.Where(x => x.Seconds == 0))
{
    x.Seconds = seconds;
}
list.FindAll(x => x.Seconds == 0)
    .ForEach(x => x.Seconds = seconds);