[英]Condition and/or calculation bug with a C# foreach loop
我在代碼隱藏文件中有一個foreach
循環,用於評估和計算網格中顯示的每個項目,並更新頁面上的總費用。 問題在於計算只是返回答案的一部分。 它返回的部分是正確的,但是沒有執行完整的計算。 我認為找到第一個條件會失敗。
業務邏輯是這樣的:如果asset
的每月成本或總成本小於或等於$ 2000,則該asset
的成本為$ 1007.95期限,而不管其簽出了多少個月(請參閱網格中的duration
器) )。
如果asset
的每月成本或總成本大於$ 2000,則將該asset
的成本乘以其成本乘以檢出的月數( duration
)。
我已經繼承了這個錯誤和項目,所以我包括了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);
}
});
屏幕截圖:
屏幕快照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的費用,但其他項則沒有。
謝謝您的考慮和關注。
這只會覆蓋之前存儲在這些變量中的所有值:
dblTotalMonthlyFee = 1007.95;
dblTotalCharge = 1007.95 * 1;
正確的方法是添加到當前值,如if
的另一個分支:
dblTotalMonthlyFee += 1007.95;
dblTotalCharge += 1007.95 * 1;
更改
dblTotalMonthlyFee = 1007.95;
dblTotalCharge = 1007.95 * 1;
至
dblTotalMonthlyFee += 1007.95;
dblTotalCharge += 1007.95 * 1;
它應該工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.