【发布时间】:2019-06-22 16:21:45
【问题描述】:
我有一个相同大小的数值数组列表。是否可以在不使用 for 循环的情况下计算它们的第 1、2、...、第 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();
}
【问题讨论】:
-
var sum = list.SelectMany(ar => ar).Sum(v => v);,也许吧? (写在这里,未经测试。) -
@Jimi 它对所有内容求和并返回一个 int。
-
啊,对,你想要 vertical 总和。要添加到您已有的答案,
Enumerable.Range一个:var sums = Enumerable.Range(0, list[0].Length).Select(col => list.Sum(lst => lst[col]));。仅适用于相同大小的数组。对于不同大小的数组,请参阅here。