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

仅使用LINQ如何实现C#中列表的列表所有值求和

仅用LINQ实现嵌套列表全量求和方案

完全可以仅通过LINQ实现需求,核心是借助SelectMany方法将嵌套的双层列表结构展平为一维的double序列,之后直接调用求和方法即可,无需手写foreach循环。

改写后的完整实现代码

写法1:和原逻辑对齐的写法

Guid key = ((KeyValuePair<Guid, string>)ComboBoxUsers.SelectedItem).Key;
double totalSum = process._statistics
    .Where(a => a.UserID == key)
    .Select(p => p.KgIntoBucket)
    .SelectMany(kgList => kgList)
    .Sum();
lblKgToBucket.Text = totalSum.ToString();

写法2:更精简的写法

可以直接在SelectMany中读取子列表属性,省略单独的Select步骤:

Guid key = ((KeyValuePair<Guid, string>)ComboBoxUsers.SelectedItem).Key;
double totalSum = process._statistics
    .Where(a => a.UserID == key)
    .SelectMany(a => a.KgIntoBucket)
    .Sum();
lblKgToBucket.Text = totalSum.ToString();

逻辑说明

SelectMany的作用是遍历上层序列的每个元素,将每个元素对应的子集合(这里就是每个统计项对应的KgIntoBucket double列表)的所有元素拼接成一个单一的一维double序列,之后直接调用Sum()方法即可对所有嵌套元素完成求和,和你原代码中foreach循环累加每个子列表和的逻辑完全等价。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 06:51:06