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

C# 对包含多列的List使用LINQ Sum方法求和失败该如何解决

C# 多列自定义类型List的LINQ求和实现方案

错误原因

你调用无参数Sum()方法触发报错的核心原因是:无参数Sum()仅支持元素本身为数值类型的序列(如List<double>、List<int>等)。你的ProductList存储的是自定义类的实例,包含多列属性,LINQ无法默认识别你要对哪个属性进行求和。

具体实现方案

1. 对指定单列求和

如果只需要对某一个数值属性列求和,直接在Sum()的参数里传入要取值的lambda表达式即可,示例如下:

// 示例:对Product类的Price属性求和
double totalPrice = ProductList.Sum(p => p.Price);
Console.WriteLine(totalPrice);

注:不需要额外调用AsQueryable(),内存中的List直接用LINQ to Objects的方法即可

2. 同时对多列分别求和

如果需要一次性计算多个列的各自总和,有两种常用实现方式:

  • 方式1:分别调用多次Sum(),写法简单直观,适合数据量不大的场景
// 分别计算Price总和、Stock库存总和
double totalPrice = ProductList.Sum(p => p.Price);
int totalStock = ProductList.Sum(p => p.Stock);
  • 方式2:单次遍历计算所有列总和,性能更高,适合数据量较大的场景
double totalPrice = 0;
int totalStock = 0;
foreach(var product in ProductList)
{
    totalPrice += product.Price;
    totalStock += product.Stock;
}

3. 对每行多列计算后再整体求和

如果需要先计算每行多个列的组合值(比如单种商品的总价值=单价*库存),再对所有行的组合值求和,写法如下:

// 计算所有商品的总库存价值
double totalValue = ProductList.Sum(p => p.Price * p.Stock);
Console.WriteLine(totalValue);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:39:00