我有一个包含 96 个值的集合。我想对 4 个顺序索引的值求和。我如何使用 Linq 执行此操作?
例子
collection = {100, 101, 200, 150, 103, 105, 100, 104, .........., 20, 40, 60, 80};
(100, 101, 200, 150;)
的总和,然后 (103, 105, 100, 104;)
的总和 ... 然后 的总和>(20, 40, 60, 80;)
这意味着现在我的新集合将有 24 个值。
如何使用 Linq 执行此操作?
最佳答案
我们可以从这个实用函数开始,根据给定的批量大小批量
项目:
public static IEnumerable<IEnumerable<T>> Batch<T>(this IEnumerable<T> source, int batchSize)
{
List<T> buffer = new List<T>(batchSize);
foreach (T item in source)
{
buffer.Add(item);
if (buffer.Count >= batchSize)
{
yield return buffer;
buffer = new List<T>(batchSize);
}
}
if (buffer.Count > 0)
{
yield return buffer;
}
}
之后就很简单了:
var query = data.Batch(4)
.Select(batch => batch.Sum());
关于c# - 使用 Linq 按索引求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17050413/