【发布时间】:2014-12-24 09:49:31
【问题描述】:
在我的程序中,我循环遍历 Excel 文件中的记录以创建数据表。然后我需要做一些在第一个循环中无法做的额外数据维护。
我正在尝试找出循环遍历现有数据表以删除具有重复值的行同时保留其他行的最佳方法。
在我的示例表中,我有三列。对于每个 CompanyCode,我需要删除重复的 BillingItems 并保留最高的 FeeAmount。因此,对于 CompanyCode 1234,我们需要删除第一行和第二行,并保留第四行。
这些值的顺序并不总是相同。
+-------------+-----------+-------------+
| CompanyCode | FeeAmount | BillingItem |
+-------------+-----------+-------------+
| 1234 | 10 | A |
| 1234 | 10 | A |
| 1234 | 15 | B |
| 1234 | 20 | A |
| 9876 | 10 | A |
| 9876 | 20 | B |
| 9876 | 30 | A |
| 9876 | 30 | A |
+-------------+-----------+-------------+
当我进入循环时,我收到错误:“集合已修改;枚举操作可能无法执行。”下面是我的循环代码。
For Each loRow In dt.Rows
Dim liDupeCount As Integer = 0
liCompanyCode = loRow(0)
ldFeeAmount = loRow(1)
lsBillingItem = loRow(2)
Dim dupeFeeAmounts() As DataRow = dt.Select("CompanyCode = '" & liCompanyCode & "' and FeeAmount = '" & ldFeeAmount & "' and BillingItem = '" & lsBillingItem.Replace("'", "''") & "'")
For Each row As DataRow In dupeFeeAmounts
liDupeCount += 1
Next
If liDupeCount > 1 Then
dt.Rows(liRowCount).Delete()
End If
liRowCount += 1
Next
【问题讨论】:
-
如果你修改你正在迭代的东西,则向后循环
标签: .net vb.net datatable visual-studio-2013