小编WCD*_*WCD的帖子

C#foreach循环的条件和/或计算错误

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美元的费用,但不是其他费用.

总费用错误示例1

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

总费用错误示例2

感谢您的考虑并看一看.

c# asp.net foreach code-behind

0
推荐指数
1
解决办法
179
查看次数

标签 统计

asp.net ×1

c# ×1

code-behind ×1

foreach ×1