c# - 使用 Linq 按索引求和

标签 c# .net linq

我有一个包含 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/

相关文章:

c# - 在 Windows 上监视文件读取 - C# 解决方案

.net - 需要一个用于从 ASP.NET 创建二进制 Excel 文件的库,有人知道一个好的库吗?

c# - Lambda 表达式和方法调用

c# - Linq to SQL 多条件 where 子句

c# - 扩展 System.Data.Linq.DataContext

c# - 检查两个逗号分隔的字符串是否相等(对于内容集)

c# - Relax C# LINQ 字符串比较(修剪、不区分大小写、??)

c# - XmlSerializer 和工厂创建的元素

c# - 如何解析由 WebBrowser 控件加载的 HTML 文件中的图像

c# - .NET 任务的性能指标/诊断