В моей программе я просматриваю записи в файле excel, чтобы создать datatable. Затем мне нужно выполнить некоторое дополнительное обслуживание данных, которое я не могу сделать в первом цикле.Ошибка при прохождении через datatable
Я пытаюсь выяснить, как наилучшим образом пройти через существующие данные, чтобы удалить строки с повторяющимися значениями, сохраняя другие.
На моей примерной таблице у меня три столбца. Для каждого CorporateCode мне нужно удалить 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
Обратный путь назад, если вы измените то, что вы итерируете – Plutonix