我正在寻找一种更改以下代码的方法:
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中执行多行?
答案 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的便捷捷径;没什么特别的。