使用Linq添加索引位置数组数组的值

Dic*_*ier 1 c# linq arrays

我们可以使用arr.Sum()函数来求和.但如果它是一个数组数组.我们如何添加所有值.假设数据是数组/列表是 [[1,2,3],[3,4,5],[5,4,3]] 如何使用LINQ获得s1,所有第一个索引值的总和,s2,第二个索引值的总和等等.

Dmi*_*nko 6

如果你想在Linq的帮助下总结列的值:

int[][] source = new int[][] {
  new int[] { 1, 2, 3},
  new int[] { 3, 4, 5},
  new int[] { 5, 4, 3},
};

int maxCol = source.Max(item => item.Length);

var colsSum = Enumerable
  .Range(0, maxCol)
  .Select(index => source.Sum(item => item.Length > index ? item[index] : 0))
  .ToArray(); // let's meaterialize into an array
Run Code Online (Sandbox Code Playgroud)

测试:

Console.Write(string.Join(", ", colsSum));
Run Code Online (Sandbox Code Playgroud)

结果:

 9, 10, 11
Run Code Online (Sandbox Code Playgroud)

总结行的值更容易:

// [6, 12, 12]
var linesSum = source
  .Select(item => item.Sum())
  .ToArray();
Run Code Online (Sandbox Code Playgroud)

如果你想金额:

// 30
var total = source
  .Select(item => item.Sum())
  .Sum();
Run Code Online (Sandbox Code Playgroud)

要么

// 30
var total = source
  .SelectMany(item => item)
  .Sum();
Run Code Online (Sandbox Code Playgroud)