web-dev-qa-db-fra.com

Somme de la gamme des int dans la liste <int>

Je pense que ce sera assez trivial mais je ne peux pas trouver comment le faire. J'ai un List<int> et je veux additionner une plage de nombres.

Dis 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 pu le faire fonctionner, je ne sais pas si c'est la meilleure façon de procéder.

Sans faire:

int sum = list[0] + list[1] + list[2];
68
Bali C

Vous pouvez accomplir cela 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, réorganisez votre liste en utilisant OrderBy ou OrderByDescending puis additionnez:

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 voir, il existe plusieurs façons d'accomplir cette tâche (ou des tâches connexes). Voir Take , Sum , Skip , OrderBy & OrderByDescending documentation pour plus d'informations.

113
James Hill