linq / lambda 中的多行 foreach 循环

Posted

技术标签:

【中文标题】linq / lambda 中的多行 foreach 循环【英文标题】:Multi-line foreach loop in linq / lambda 【发布时间】:2011-04-26 11:44:57 【问题描述】:

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

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 中执行多行操作?

【问题讨论】:

【参考方案1】:
contacts.ForEach(c =>  c.ID = 0; c.GroupID = 0; c.CompanyID = 0; );

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

【讨论】:

我正在寻找一种在 LINQ Select 中执行多行语句的方法。 ForEach 语法允许我这样做。谢谢!【参考方案2】:

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

ForEach method hangs off List<T> 是一个方便的 foreach 快捷方式;没什么特别的。

【讨论】:

谢谢,这很有帮助。看起来有点类似于 ES6 中的 map 函数。

以上是关于linq / lambda 中的多行 foreach 循环的主要内容,如果未能解决你的问题,请参考以下文章

linq/lambda 查询中的双内连接?

是否可以将 Linq 中的 lambda 参数化为实体选择

Linq中的lambda /方法语法中的左外连接[重复]

Linq Where() lambda 表达式中的“或”等价物

为啥 Lambda 变量范围存在于 LINQ 查询之外?

如何解决 C# 中 linq 的 lambda 表达式中的对象引用错误?