我正在尝试提出一个 linq 查询来转换 IEnumerable<int>
到另一个IEnumerable<int>
,其中结果中的每个整数都是从初始列表到该位置的所有整数的总和:
给定int[] a
我需要 int[] b
在哪里b[0] = a[0], b[1] = a[0] + a[1], b[2] = a[0] + a[1] + a[2]
等等
或者,上面的总和可以写成 b[1] = b[0] + a[1], b[2] = b[1] + a[2]
等等,但我看不出这会有什么帮助。
当然,我可以用 for
来做到这一点循环,但我从查询中获得了 a[] 序列,我认为如果我继续该查询而不是突然添加一个 for
会更好看。那里:)
最佳答案
嗯,你可以很容易地做到有副作用,虽然它很恶心......
int sum = 0;
int[] b = a.Select(x => (sum += x)).ToArray();
如果框架提供一种“运行聚合”来封装它,那就太好了,但据我所知,它并没有。
关于c# - 如何计算 Linq 查询中一系列整数的运行总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1184812/