List <int>中int的总和范围


70

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

说我的清单是:

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

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

不做:

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

另请注意,如果包含System.Linq,则可以在集合中使用许多其他功能:msdn.microsoft.com/zh-cn/library/system.linq.enumerable.aspx

Answers:


119

您可以使用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

如您所见,有多种方法可以完成此任务(或相关任务)。见TakeSumSkipOrderByOrderByDescending了解更多信息的文档。


我们也可以对数组做同样的事情吗?
严厉的贾斯瓦尔

0

或者只是使用Linq

int result = list.Sum();

总结前三个元素:

int result = list.GetRange(0,3).Sum();
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.