2010-04-23 213 views
0

我有一件小事。使用Lambda C#3.0进行求和

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的东西,有兴趣学习..不管它有多简单。

谢谢。

+1

**从不**命名变量'l' 。 – SLaks 2010-04-23 02:31:43

回答

4

LINQ已经拥有了Sum extension method

list.Sum(); 

可以使用C#2.0的方法重写​​方法,像这样:

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

这是真的,但它并没有真正回答这个问题......显然,“新手”已经想出了如何对序列中的元素进行求和;他以lambda为例要求一个例子。 – 2010-04-23 02:29:17

+0

@亨利:我给了一个。 – SLaks 2010-04-23 02:31:14

+0

非常感谢。我要求提供1个解决方案,但您向我展示了两种方法。非常感谢你。 – Newbie 2010-04-23 02:32:08

4

Aggregate()是为这样的操作进行:

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

非常感谢你。既然我不能将这两个答案都标记为已接受,并且我已经答应了这个问题,所以这次我很抱歉。下次我肯定会标记你的。但再一次,非常感谢。 – Newbie 2010-04-23 02:54:00