Lambda表达式中调用静态方法实现先舍入再求和的问题求助
嗨,这个问题很常见,其实就是调整一下舍入操作的执行顺序就行!
解决方案
直接把舍入逻辑移到Lambda表达式内部,对每个单独的数值先做舍入,再累加求和,修改后的代码如下:
this.ClonedEntity.MontantHT = correctedLines.Sum(l => ArroundDecimal.CustomDecimalArround(l.MontantHT ?? 0));
逻辑对比
- 你原来的代码:
ArroundDecimal.CustomDecimalArround(correctedLines.Sum(l => l.MontantHT ?? 0))→ 先把所有数值求和,再对总和做舍入(对应先求和再舍入); - 修改后的代码:先对每个
l.MontantHT ?? 0执行CustomDecimalArround舍入,再将所有舍入后的结果累加(对应你想要的先舍入每个值再求和)。
小提醒
要确保ArroundDecimal.CustomDecimalArround这个静态方法的参数类型和l.MontantHT ?? 0的类型匹配(比如如果MontantHT是decimal?,那么l.MontantHT ?? 0是decimal,方法参数就应该接收decimal类型),同时方法返回值也得是可累加的数值类型(比如decimal),这样Sum方法才能正常工作。
内容的提问来源于stack exchange,提问作者yass1n3
相关产品推荐
相关产品推荐

