linq/lambda中的多行foreach循环

Sep*_*eph 38 linq foreach lambda

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

foreach (Contact _contact in contacts)
{
    _contact.ID = 0;
    _contact.GroupID = 0;
    _contact.CompanyID = 0;
}
Run Code Online (Sandbox Code Playgroud)

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

contacts.ForEach(c => c.ID = 0; c.GroupID = 0; c.CompanyID = 0);
Run Code Online (Sandbox Code Playgroud)

然而,这不起作用.除了通过编写函数在一行中执行此操作之外,有没有办法在linq foreach中执行多行操作?

Meh*_*ari 65

contacts.ForEach(c => { c.ID = 0; c.GroupID = 0; c.CompanyID = 0; });
Run Code Online (Sandbox Code Playgroud)

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


Rex*_*x M 5

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

ForEach方法挂起List<T>,是 foreach 的便捷快捷方式;没什么特别的。