【发布时间】:2017-01-10 10:46:28
【问题描述】:
在我的 vb.net 项目中,我有这个表格,用于向订单添加额外费用(例如,送货费用)。
在本例中,运费编号是相同的,因为运费是针对整个订单的,而不是每行都有运费。但是,可以选择为每个单独的订单行添加不同的运费值,因此数字会不同(例如,7 和 8),每行的值也会不同。
按下“添加”按钮时,行或订单(取决于添加运费的方式)将添加到标有“运费”的网格中。但是,数据只存储在DataTable 中,然后将其传递给 Order Save 函数,从中将行复制到数据库中,然后从DataTable 中删除。
现在,请注意标记为“Total Freight”的textbox...这目前正在遍历DataTable 的每一行并将所有总计加在一起。运费全不一样的情况下是可以的,但是如果是按订单添加的,有2行,如上,应该是15,而不是现在显示的30。
那么,有没有一种方法可以让它只迭代具有不同 Freight # 值的行,这样它就不会两次添加相同的行值?我不认为SQL SELECT DISTINCT 可以在这里工作,因为它只是DataTable?
这很难解释,但希望这是有道理的,但如果不是很抱歉!
编辑
总额计算代码(freightTable是我的DataTable)
If freightTable.Rows.Count = 0 Then
txtTotal.Text = "0.00"
Else
Dim tot As Double = 0
Dim i As Integer = 0
For i = 0 To freightTable.Rows.Count - 1
tot = tot + Convert.ToDouble(ugFreight.Rows(i).Cells("Freight_Val").Value)
Next i
txtTotal.Text = tot
End If
【问题讨论】:
-
你可以像这样创建一个泛型方法:Get distinct values from a column of DataTable
-
链接的帖子适用于 .NET 2.0,所以我没有使用 linq。其实使用 linq 可以只用 1 行代码。
-
还可以查看使用
DataTable计算列值总和的更好方法,请查看:Show total Sum of values of a Column of a DataTable
标签: sql vb.net datatable iteration