【问题标题】:How can I write foreach loop to sum elements in lamba expression?如何编写 foreach 循环来对 lambda 表达式中的元素求和?
【发布时间】:2016-06-24 06:37:26
【问题描述】:

如何将如下所示的 foreach 循环编写为 labmda 表达式?

var sum = 0;
foreach (SomeClass obj in SomeListOfClass)
{
   sum += obj.SomeValue;
}

我期待一个看起来像这样的 lambda 表达式

var sum = SomeListOfClass.ForEachMethod( x => sum += x.SomeValue)

有什么办法吗?

【问题讨论】:

  • 你可以使用 Linq 的 Sum 扩展方法 var sum = SomeListOfClass.Sum(x => x.SomeValue);
  • 为什么有这么多反对票?这个问题到底有什么问题。没听懂?
  • @talaa123 好吧,您的代码没有多大意义(为什么要在 lambda 中添加 sum 并将其设置为返回值?)而且您显然没有看文档,您可以在其中找到 Sum()ForEach()。您也没有解释为什么要使用 lambda。

标签: c# foreach lambda linq-expressions


【解决方案1】:

使用 Linq:

using System.Linq;

var sum = list.Sum(x => x.SomeValue);

【讨论】:

    【解决方案2】:

    对于手头的特殊情况(sum),您可以使用Linq 的Sum 方法。

    SomeListOfClass.Sum(c => c.Property);
    

    不过,这只是Aggregate 的一个特例。如果您需要更复杂的列表聚合,您可以使用它。
    下面是一个总结整数值的例子:

    var ints = new List<int>() { 1, 2, 3 };
    var x = ints.Aggregate((start, current) => start + current);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多