Диапазон сумм int в List <int>

Я считаю, что это будет довольно тривиально, но я не могу понять, как это сделать. У меня есть List<int>, и я хочу суммировать диапазон чисел.

Скажите, что мой список:

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

Как я получу сумму первых трех объектов? Результат - 6. Я попытался использовать Enumerable.Range, но не смог заставить его работать, не уверен, что это лучший способ сделать это.

Без выполнения:

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

Ответ 1

Вы можете выполнить это, используя Take и Sum:

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

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

Если вы хотите суммировать начало диапазона в другом месте, вы можете использовать Skip:

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

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

Или измените порядок списка, используя OrderBy или OrderByDescending, а затем сумму:

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

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

Как вы можете видеть, существует несколько способов выполнения этой задачи (или связанных задач). См. Take, Sum, Skip, OrderBy и OrderByDescending для дальнейшей информации.