如何使用LINQ对未知数量的数组元素求和?

saa*_*stn 3 c# linq

我有一个相同大小的数字数组的列表。是否可以在不使用for循环的情况下计算其第一,第二,...,第n个元素的总和?

这是我使用循环执行的代码:

static void Main(string[] args)
{
    List<int[]> list = new List<int[]>();
    int n = 4;
    list.Add(new int[] { 1, 2, 3, 4 });
    list.Add(new int[] { 5, 6, 6, 7 });
    list.Add(new int[] { 8, 9, 10, 11 });

    int[] sum = new int[n];
    foreach (int[] array in list)
        for (int i = 0; i < n; i++)
            sum[i] += array[i];
    foreach (int value in sum)
        Console.Write($"{value} ");
    Console.Read();
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*ler 5

var sum = list[0].Select((value, i) => list.Sum(sublist => sublist[i]));
Run Code Online (Sandbox Code Playgroud)

Needs special handling for empty list.

Explanation:

sublist => sublist[i]
Run Code Online (Sandbox Code Playgroud)

Given a sublist (i.e. one of the arrays), this selects the i-th element.

list.Sum(sublist => sublist[i])
Run Code Online (Sandbox Code Playgroud)

此查询计算单个数字,该数字是i的子列表的所有元素的总和list

list[0].Select((value, i) => list.Sum(sublist => sublist[i]))
Run Code Online (Sandbox Code Playgroud)

这会为中的每个条目选择一个数字list[0]。该数字是i子列表中所有第-个条目的总和。