在List <T> ForEach()中设置多个属性?
给定一个类:
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()
是一个LINQ扩展方法,当它实际上是List<T>
哎呀!
所有你需要做的是引入一些括号,以便你的匿名方法可以支持多行:
list.ForEach(i => { ia = "hello!"; ib = 99; });
匿名方法是你的朋友
list.ForEach(item => { item.a = "hello!"; item.b = 99; });
MSDN:
- 匿名方法(C#编程指南)
list.ForEach(lamba=>lambda.a="hello!");
变
list.ForEach(item=>{ item.a = "hello!"; item.b = 99; });
当然,您也可以在创build列表时将其分配给他们:
var list = new List<foo>(new []{new foo(){a="hello!",b=99}, new foo(){a="hello2",b=88}});
老实说,这里真的不需要使用List.ForEach:
foreach (var item in list) { item.a="hello!"; item.b=99; }
list.ForEach(i => i.DoStuff()); public void DoStuff(this foo lambda) { lambda.a="hello!"; lambda.b=99; }