在List <T> ForEach()中设置多个属性?


117

给定一个班级:

class foo
{
    public string a = "";
    public int b = 0;
}

然后是它们的通用列表:

var list = new List<foo>(new []{new foo(), new foo()});

如果我要在以下方法中分配多个属性List<T> ForEach(),请问下面有一种更简单的方法吗?希望我有点胖。

// one property - easy peasy
list.ForEach(lambda => lambda.a="hello!");
// multiple properties - hmm
list.ForEach(lambda => new Action(delegate() { lambda.a = "hello!"; lambda.b = 99;}).Invoke());

编辑:ForEach()当它实际上是List<T>哎呀的一部分时,以为是LINQ扩展方法!


我没有任何线索可寻,但是我对此代码的这种方法很感兴趣。您能否定义一个动作是什么?
Anwar '02

4
没关系,但这List<T>是LINQ 上的方法,而不是LINQ。另外,您可以使用var list = new List<foo>() { new foo(), new foo() };
Marc

Answers:




11
list.ForEach(lamba=>lambda.a="hello!"); 

成为

list.ForEach(item=>{
     item.a = "hello!";
     item.b = 99;
});

当然,您也可以在创建列表时分配它们,例如:

var list = new List<foo>(new []{new foo(){a="hello!",b=99}, new foo(){a="hello2",b=88}}); 

3
list.ForEach(i => i.DoStuff());
public void DoStuff(this foo lambda)
{
  lambda.a="hello!"; 
  lambda.b=99;
}

3

老实说,实际上并不需要使用List.ForEach:

foreach (var item in list) { item.a="hello!"; item.b=99; }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.