Home » c# » Sum range of int's in List<int>

# Sum range of int's in List<int>

Questions:

I reckon this will be quite trivial but I can’t work out how to do it. I have a `List<int>` and I want to sum a range of the numbers.

Say my list is:

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

How would I get the sum of the first 3 objects? The result being 6. I tried using `Enumerable.Range` but couldn’t get it to work, not sure if that’s the best way of going about it.

Without doing:

``````int sum = list + list + list;
``````

You can accomplish this by using `Take` & `Sum`:

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

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

If you want to sum a range beginning elsewhere, you can use `Skip`:

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

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

Or, reorder your list using `OrderBy` or `OrderByDescending` and then sum:

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

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

As you can see, there are a number of ways to accomplish this task (or related tasks). See `Take`, `Sum`, `Skip`, `OrderBy` & `OrderByDescending` documentation for further information.