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
相关产品推荐
相关产品推荐

