我在ASP.net MVC项目中有一个方法,该方法应该从某些列表中提取某些值的总和,将它们加在一起,然后将它们乘以一个值。列表从SQL表中提取,存储为十进制值,当我使用Linq检索值的总和时,它们就是十进制值。但是,当我尝试相乘或相加时,结果始终为零。
private Decimal LLR = 0.00284M;
private Decimal GetStandardReserveForLoan(List<Loan> loans, List<LineOfCredit> locs)
{
decimal l = locs.Sum(x => x.MaxCredit ?? 0M);
decimal loan = loans.Sum(x => x.LoanAmount ?? 0M);
decimal subtotal = loan + l;
decimal total = subtotal * LLR;
return total;
}
当我在decimal total =
行上设置断点并查看本地变量时,subtotal = 0
和total = 0
。我什至可以进入立即窗口,将loan + l
与17500.00
相加,再乘以(loan + l) * LLR
得到49.7
。
为什么我可以在立即窗口中获得正确的值,但是该方法将不会返回正确的值?
答案 0 :(得分:1)
您要传递给Sum()
的输入值可能为空。从Sum()
documentation:
如果source不包含任何元素,则Sum(IEnumerable)方法将返回零。
答案 1 :(得分:0)
我通过将行更改为loan
的方式将行添加了一个明确的小数点来固定计算,例如:
decimal loan = loans.Sum(x => x.LoanAmount ?? 0.00M);
该方法现在为我正确返回49.700000。