gridview列的总和,跳过重复

时间:2014-05-28 18:57:44

标签: c# algorithm datagridview

我的数据网格视图中填充了类似

的数据
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在这里并不重要,带数组的算法对我也很有用。

1 个答案:

答案 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]);
   }
}

希望这是有道理的!