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

C# List Sum()抛出OverflowException算术溢出问题求助

解决Linq Sum时的OverflowException问题

修正后的代码

long teste = joinHhResWithMemRes.Where(x => x.OcupacaoCode == 1).Sum(x => (long)x.Weight);

问题原因

你的Weight字段应该是int类型,调用Sum(x => x.Weight)时,Linq会默认使用针对int的Sum重载——这个重载内部用int类型累加,而你要计算的总和(46219134368)远超过int的最大值(2147483647),累加过程中直接触发溢出,后续再转long已经无法挽回。

关键说明

不管你最终要转成long、decimal还是其他类型,必须先将单个元素的Weight转换为大数值类型,再执行Sum,这样Linq会匹配对应的重载,用大类型完成累加,避免中途溢出。比如用decimal的话:

decimal teste = joinHhResWithMemRes.Where(x => x.OcupacaoCode == 1).Sum(x => (decimal)x.Weight);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:05:21