ForEach扩展方法中的多重选择

时间:2010-07-20 18:14:30

标签: c# asp.net linq

是否可以在ForEach Extension Method中选择多个entiies?

(即)

给出部分代码

DataTableA.AsEnumerable().ToList().
    ForEach(x=>
    {
        x.SetField<string>("Name","Jon Skeet"),
        x.SetField<string>("msg","welcome")
    });

当我在ForEach中应用多个选择时

 x=>
{
    x.SetField<string>("Name","Jon Skeet"),
    x.SetField<string>("msg","welcome")
}

我无法完成声明。请帮助。

1 个答案:

答案 0 :(得分:5)

您需要将lambda编译为有效的C#:

DataTableA.AsEnumerable().ToList().ForEach(
     x=>  
     {
         x.SetField<string>("Name","Jon Skeet");
         x.SetField<string>("msg","welcome");
      });

话虽如此,我谨慎对待此事。使用ForEach是purposely causing side-effects,它实际上并不比语言本身的foreach语句更简洁。就个人而言,我只想写:

foreach(var element in DataTableA.AsEnumerable())
{
    element.SetField<string>("Name","Jon Skeet");
    element.SetField<string>("msg","welcome");
}

在我看来,这比第一个语句要清晰得多(更短,更高效,因为它不会强制列表中的完整枚举,以及列表元素的第二个枚举)。