我的数据网格视图中填充了类似
的数据Selected ProductName InvoiceNr InvoiceValue
X A 1 10
B 1 10
X C 2 20
D 2 20
X E 1 10
X F 3 30
G 4 40
X H 2 20
我需要找到所选发票的总和但是如果多次选择任何发票,它应该只去一次,所以我的总和将是10 + 20 + 30。
我应该很容易在SQL中计算它,但我需要在C#中进行计算,可能是在遍历所有行的循环中。
任何最佳方式吗?
我认为datagridview在这里并不重要,带数组的算法对我也很有用。
答案 0 :(得分:1)
最简单的方法是使用List来跟踪你已经添加的发票号码 - 几乎是伪代码,如下所示:
int sumOfValues = 0;
List<string> addedInvoiceNumbers = new List<string>();
foreach (DataRow dr in rows)
{
//if row is selected and the list doesn't contain the InvoiceNumber
if (dr[0] == true && !addedInvoiceNumbers.Contains(dr[2]))
{
sumOfValues += dr[3];
addedInvoiceNumbers.Add(dr[2]);
}
}
希望这是有道理的!