如何使用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...
换句话说,找到Seconds == 0的所有foo对象并将值更改为我的局部变量......
我不想循环列表......我确信有一种方法可以用简单的lambda方法来做到这一点......
任何帮助表示赞赏
单向
答案 0 :(得分:10)
嗯,你可以做:
list.FindAll(x => x.Seconds == 0)
.ForEach(x => x.Seconds = seconds);
我个人更喜欢旁边效果部分的显式循环:
foreach (var x in list.Where(x => x.Seconds == 0))
{
x.Seconds = seconds;
}
(顺便说一下,我假设这是一个引用类型。如果它是一个值类型,那么为什么它不起作用会有各种其他原因。)
编辑:您可能希望查看Eric Lippert's thoughts on the matter too。
答案 1 :(得分:0)
list.FindAll(x => x.Seconds == 0)
.ForEach(x => x.Seconds = seconds);
我认为上述内容无法编译
.ForEach(...)
返回void,它不能位于FindAll()
方法的右侧。