Home > Mobile >  How to sum List<int> values but only by cells in C#?
How to sum List<int> values but only by cells in C#?

Time:09-26

For example I have this as List<List<int>>:

[2,4,4,2,5]
[1,3,6,3,8]
[0,3,9,0,0]

Should return the sum but only taking cells assuming that the cell count is always the same:

[3, 10, 19, 5, 13]

I am trying to find an easy way to solve this using Linq if it is possible because I am doing this with a lot of for loops and if conditions and I am complicating myself.

Is there a possible way to achieve this using Linq?

CodePudding user response:

Linq approach

List<List<int>> items = new List<List<int>>() {
                        new List<int> { 2, 4, 4, 2, 5 },
                        new List<int> { 1, 3, 6, 3, 8 },
                        new List<int> { 0, 3, 9, 0, 0 } };

List<int> result = Enumerable.Range(0, items.Min(x => x.Count)).Select(x => items.Sum(y => y[x])).ToList();

CodePudding user response:

var xx = new List<List<int>>() {
    new List<int>() { 2, 4, 4, 2, 5 },
    new List<int>() { 1, 3, 6, 3, 8 },
    new List<int>() { 0, 3, 9, 0, 0 },
};
var y = xx.Aggregate((r, x) => r.Zip(x).Select(p => p.First   p.Second).ToList());
  • Related