77 votes

Somme de la gamme d'int dans List<int>

Je pense que c'est assez simple, mais je n'arrive pas à trouver comment le faire. J'ai un List<int> et je veux additionner une série de chiffres.

Disons que ma liste est :

var list = new List<int>()
{
    1, 2, 3, 4
};

Comment puis-je obtenir la somme des 3 premiers objets ? Le résultat étant 6. J'ai essayé d'utiliser Enumerable.Range mais je n'ai pas réussi à le faire fonctionner, je ne sais pas si c'est la meilleure façon de procéder.

Sans le faire :

int sum = list[0] + list[1] + list[2];

0 votes

Veuillez également noter que si vous incluez System.Linq, vous pouvez utiliser de nombreuses autres facilités avec votre collection : msdn.microsoft.com/fr/us/library/system.linq.enumerable.aspx

129voto

James Hill Points 27532

Vous pouvez y parvenir en utilisant Take & Sum :

var list = new List<int>()
{
    1, 2, 3, 4
};

// 1 + 2 + 3
int sum = list.Take(3).Sum(); // Result: 6

Si vous voulez additionner une plage commençant ailleurs, vous pouvez utiliser Skip :

var list = new List<int>()
{
    1, 2, 3, 4
};

// 3 + 4
int sum = list.Skip(2).Take(2).Sum(); // Result: 7

Ou bien, réorganisez votre liste en utilisant OrderBy ou OrderByDescending et ensuite la somme :

var list = new List<int>()
{
    1, 2, 3, 4
};

// 3 + 4
int sum = list.OrderByDescending(x => x).Take(2).Sum(); // Result: 7

Comme vous pouvez le constater, il existe plusieurs façons d'accomplir cette tâche (ou des tâches connexes). Voir Take , Sum , Skip , OrderBy & OrderByDescending pour de plus amples informations.

0 votes

Peut-on faire de même avec le tableau ?

5voto

David Young Points 71

Ou utilisez simplement Linq

int result = list.Sum();

Pour résumer les trois premiers éléments :

int result = list.GetRange(0,3).Sum();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X