代码之家  ›  专栏  ›  技术社区  ›  Seph

LINQ/lambda中的多行foreach循环

  •  38
  • Seph  · 技术社区  · 14 年前

    我正在寻找更改以下代码的方法:

    foreach (Contact _contact in contacts)
    {
        _contact.ID = 0;
        _contact.GroupID = 0;
        _contact.CompanyID = 0;
    }
    

    我想使用linq/lambda将其更改为类似于:

    contacts.ForEach(c => c.ID = 0; c.GroupID = 0; c.CompanyID = 0);
    

    但这不起作用。除了在一行中编写一个函数来实现这一点之外,在Linq ForEach中还有什么方法可以实现多行操作吗?

    2 回复  |  直到 14 年前
        1
  •  64
  •   Mehrdad Afshari    14 年前
    contacts.ForEach(c => { c.ID = 0; c.GroupID = 0; c.CompanyID = 0; });
    

    它本身与Linq没有任何关系;它只是一个简单的匿名方法,用lambda语法编写,并传递给 List<T>.ForEach 函数(从2.0开始存在,在LINQ之前)。

        2
  •  3
  •   Rex M    14 年前

    Linq代表语言集成 查询 -也就是说它是为了 查询 -即将序列提取或转换为新的集合,而不是操作原始序列。

    这个 ForEach method hangs off List<T> 而且是通往foreach的方便快捷方式;没有什么特别的。