【问题标题】:Summation using Lambda C# 3.0使用 Lambda C# 3.0 求和
【发布时间】:2010-04-23 02:26:14
【问题描述】:

我有一件小事。

public int GetSum(List<int> x)
{
    foreach (int i in x) sum += i;

return sum;

}

其中 x 是定义为的整数列表

List<int> l = new List<int>();
            l.Add(4); l.Add(2); l.Add(5); l.Add(8); l.Add(6);

并已通过GetSum(l)

是否可以使用 lambda 重写上述 foreach 循环?

原因:我从昨天开始研究 lambda 的东西,并且有兴趣学习......无论它多么简单。

谢谢。

【问题讨论】:

  • 从不将变量命名为l

标签: c#-3.0


【解决方案1】:

LINQ 已经有一个Sum extension method:

list.Sum();

您可以使用 C# 2.0 的 List&lt;T&gt;.ForEach 方法重写您的 GetSum 方法,如下所示:

public int GetSum(List<int> x) {
    int sum;
    x.ForEach(i => sum += i);   
    return sum;
}

【讨论】:

  • 这是真的,但它并不能真正回答问题……显然“新手”已经想出了如何对序列中的元素求和;他在问一个 lambda 的例子。
  • 非常感谢。我要求 1 个解决方案,但您向我展示了两种相同的方法。非常感谢。
【解决方案2】:

Aggregate() 是为这样的操作而设计的:

public int GetSum(List<int> x)
{
    return x.Aggregate((a, b) => a + b);
}

【讨论】:

  • 也非常感谢。由于我无法将两个答案都标记为已接受,并且我已经向@slack 承诺过,所以这次我很抱歉。下次我一定会标记你的。但再一次,非常感谢。
猜你喜欢
  • 1970-01-01
  • 2017-01-31
  • 2017-06-10
  • 1970-01-01
  • 2010-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-22
相关资源
最近更新 更多