2010-04-23 10 views
0

J'ai une petite chose.Sommation en utilisant Lambda C# 3.0

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

return sum; 

} 

où x est une liste de nombres entiers défini comme

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

et a été adoptée comme GetSum(l)

Est-il possible de réécrire la boucle de foreach ci-dessus en utilisant un lambda?

Raison: J'ai commencé à regarder dans les étoffes lambda depuis hier et cela m'intéresse d'apprendre .. aussi simple soit-il.

Merci.

+1

** Jamais ** nomme une variable 'l' . – SLaks

Répondre

4

LINQ a déjà Sum extension method:

list.Sum(); 

Vous pouvez réécrire votre méthode GetSum en utilisant la méthode de C# 2.0 , comme ceci:

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

C'est vrai, mais ça ne répond pas vraiment à la question ... évidemment "Débutant" a compris comment additionner les éléments de la séquence; il demandait un exemple avec un lambda. –

+0

@Henry: J'en ai donné un. – SLaks

+0

Merci beaucoup. J'ai demandé une solution mais vous m'avez montré deux façons de faire la même chose. Merci beaucoup. – Newbie

4

Aggregate() a été fait pour des opérations comme celle-ci:

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

Merci beaucoup aussi. Comme je ne peux pas marquer la réponse comme acceptée et j'ai déjà promis @slack à ce sujet, alors je suis désolé cette fois. La prochaine fois, je vais certainement marquer le vôtre. Mais encore une fois, merci beaucoup. – Newbie

Questions connexes