77

我认为这将是微不足道的,但我不知道该怎么做。我有一个List<int>,我想对一系列数字求和。

说我的清单是:

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

我将如何获得前 3 个对象的总和?结果是 6。我尝试使用Enumerable.Range但无法让它工作,不确定这是否是最好的方法。

不做:

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

2 回答 2

129

您可以使用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或者,使用or重新排序您的列表OrderByDescending,然后求和:

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

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

如您所见,有多种方法可以完成此任务(或相关任务)。有关更多信息,请参阅TakeSum、和文档。SkipOrderByOrderByDescending

于 2012-04-23T16:08:44.977 回答
5

或者只是使用 Linq

int result = list.Sum();

总结前三个要素:

int result = list.GetRange(0,3).Sum();
于 2020-05-18T10:35:34.380 回答