linq / lambda中的多行foreach循环

时间:2010-10-17 02:23:05

标签: linq lambda foreach

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

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 个答案:

答案 0 :(得分:64)

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

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

答案 1 :(得分:3)

LINQ代表语言集成查询 - 这意味着它用于查询 - 即将序列提取或转换为新集合,而不是操纵原始集合。

ForEach method hangs off List<T>并且是foreach的便捷捷径;没什么特别的。