繁体   English   中英

遍历数据表时出错

[英]Error when looping through datatable

在我的程序中,我遍历excel文件中的记录以创建数据表。 然后,我需要做一些其他的数据维护工作,而这在第一个循环中是无法做到的。

我正在尝试找出遍历现有数据表的最佳方法,以删除具有重复值的行,同时保留其他值。

在示例表中,我有三列。 对于每个公司代码,我需要删除重复的BillingItem,并保持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

您无法删除使用datatable进行迭代的循环内的行,并且删除相同的表行会导致收集错误,

循环在启动循环时将重点放在数据表的行数上,如果删除行,则行数会减少,并且与循环集中计数和数据表计数不匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM