不知道你是如何創建的數據表,我會給你如何計算線總和值和表中總數更直接的方式。例如創建一個完整的行項目,我可以建立一個數據表通過以下方式
var table = new DataTable();
table.Columns.Add("Id", typeof(Int32));
table.Columns.Add("Code", typeof(String));
table.Columns.Add("Description", typeof(string));
table.Columns.Add("Quantity", typeof(Int32));
table.Columns.Add("ItemPrice", typeof(decimal));
table.Columns.Add("SubTotal", typeof(decimal), "Quantity*ItemPrice");
table.Columns.Add("Taxes", typeof(decimal), "SubTotal*0.21");
table.Columns.Add("LineTotal", typeof(decimal), "SubTotal + Taxes");
在你在這裏看到的是,計算邏輯就成了我現在的數據表的功能。我不必分別計算所有項目,在添加行後,SubTotal
,Taxes
和LineTotal
會自動計算。這是通過使用完成DataColumn.Expression
那麼我可以添加項目,例如像:
table.Rows.Add(1, "DECA10", "Coffee decafinated", 1, 2.5);
table.Rows.Add(2, "ESPR", "Espresso", 2, 2.5);
,然後我可以用DataTable.Compute
功能來計算我需要的總和,就像這樣:
decimal subTotal = (decimal)table.Compute("Sum(SubTotal)", "");
decimal total = (decimal)table.Compute("Sum(LineTotal)", "");
decimal taxTotal = (decimal)table.Compute("Sum(Taxes)", "");
Int64 quantityTotal = (Int64)table.Compute("Sum(Quantity)", "");
然後告訴他們(無論是在你的程序中,或在我的情況下,控制檯內),像這樣:
Console.WriteLine("Sub total = {0} €", subTotal);
Console.WriteLine("Taxes = {0} €", taxTotal);
Console.WriteLine("Total = {0} €", total);
Console.WriteLine("Quantity = {0} pieces", quantityTotal);
這個小的演示程序的例子,你可以找到一個dotnetfiddle here
我不明白,從你添加的圖像,一切似乎是正確的,你有1行,成本10€和2.1歐元(21%的比利時稅),所以,你的問題是什麼? – Icepickle
另外請注意,你從總數中減去0,所以,你幾乎不能說這是一個變化;) – Icepickle
當我刪除該行仍然顯示比利時稅收,然後總額是2.1歐元,需要爲0。 –