2010-04-23 44 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