我foreach在代码隐藏文件中有一个循环,用于评估和计算网格中显示的每个项目并更新页面上的总费用.问题是计算只返回部分答案.它返回的部分是正确的,但它没有执行完整的计算.我相信它在找到第一个条件时失败了.
业务逻辑是这样的:如果asset每月或总成本小于或等于2000美元,则其成本asset为1007.95美元,无论签出多少个月(参见duration网格中的微调器).
如果asset一个月或总成本超过2000美元,那么其成本asset就是它的成本乘以duration它检出的月数().
我继承了这个bug和项目,所以我已经包含了完整的代码foreach,并提供了下面的两个支持截图(我不得不模糊截图中的一些信息,但显示了相关元素).
代码:
private void PopulateFormFees(CheckOut c)
{
double dblTotalMonthlyFee = 0;
double dblTotalCharge = 0;
c.CheckOutAssets.ForEach(delegate(CheckOutAsset coa)
{
if (coa.UsageFee < 2001)
{
dblTotalMonthlyFee = 1007.95;
dblTotalCharge = 1007.95 * 1;
}
if (coa.UsageFee > 2000)
{
dblTotalMonthlyFee += coa.UsageFee;
dblTotalCharge += (coa.UsageFee * coa.DurationMonths);
}
});
Run Code Online (Sandbox Code Playgroud)
Screencaptures:
屏幕截图1显示初始视图中的表单数据.在这里我们可以看到总费用label显示5,132.95美元,这表明该foreach循环计算的是4,125.00美元的费用和1,007.95美元的费用,但不是其他费用.

屏幕截图2显示了duration每个项目增加的示例.在这里,我们看到总费用label显示为21,632.95美元,这表明该foreach循环正在计算4,125.00美元的费用和1,007.95美元的费用,但不是其他费用.

感谢您的考虑并看一看.