You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C# LINQ实现List<List<int>>的按索引元素求和?

按索引合并多个int列表并求和

给定多个长度一致的int类型列表,我们需要生成一个新列表,其中每个元素是原列表对应索引位置元素的总和。比如示例中的三个列表:

var a = new List<int>() { 1, 1, 1 };
var b = new List<int>() { 1, 1, 1 };
var c = new List<int>() { 3, 4, 5 };
// 预期结果:{5, 6, 7}

解决方案1:固定数量列表用Zip链式调用

如果列表数量是确定的,可以通过多次调用Zip方法逐步累加对应索引的元素:

var result = a.Zip(b, (x, y) => x + y)
              .Zip(c, (sum, z) => sum + z)
              .ToList();

每一次Zip都会将两个列表的对应元素合并,这里先把a和b的元素相加,再将结果和c的元素继续相加,最终得到求和后的列表。

解决方案2:任意数量列表的通用处理

如果需要支持任意数量的列表,我们可以先遍历每个索引位置,再对所有列表的该索引元素求和:

// 将所有列表放入一个集合中
var allLists = new List<List<int>> { a, b, c };

// 先验证所有列表长度一致(可选,但建议添加)
if (allLists.Any(list => list.Count != allLists.First().Count))
{
    throw new ArgumentException("所有列表必须具有相同的长度");
}

// 生成结果列表
var result = Enumerable.Range(0, allLists.First().Count)
                       .Select(index => allLists.Sum(list => list[index]))
                       .ToList();

Enumerable.Range(0, allLists.First().Count)生成所有索引值,然后对每个索引,调用Sum计算所有列表在该索引位置的元素总和,最后转成List即可。

内容的提问来源于stack exchange,提问作者Joe Riggs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 05:19:57