循环访问数据行时遇到错误。我搜索了SO并尝试了解决方案,但没有运气。
收藏被修改;枚举操作可能无法执行。
Dim dRow As DataRow
For Each dRow In dt.Rows
dt.Rows.Add(dRow("CustNum"), dRow("SalesRepName"), dRow("mgrid"), "=""" & dRow("midValue") & """", dRow("dba"), dRow("sysDate"), dRow("statusID"))
Next
第一次代码点击“Next
”时发生错误
什么会导致收集被修改;枚举操作可能无法执行。如何解决此错误?
答案 0 :(得分:2)
您要将项目添加到您要枚举的集合中。从逻辑上讲,它会无限循环。这种情况不会发生。如果您真的想要这样做,请通过为数据创建Structure
或Class
,将项目添加到列表,然后循环遍历列表并将项目添加到表中,将其拆分为两个。
答案 1 :(得分:2)
更新时无法枚举集合。即使这段代码确实有效,但它会永远运行,因为你不断添加越来越多的行,它会继续枚举它们。
您可以稍微改变您的方法,并通过使用带索引计数器和固定上限的for循环来使其工作。
这样的事情应该有效:
Dim rowCount As Integer = dt.Rows.Count ' Set upper bound = original row count
Dim index as Integer
For index = 0 To rowCount - 1 ' Iterate through the original set of rows
Dim dRow as DataRow = dt.Rows.Item(index) ' Get row by index
dt.Rows.Add(dRow("CustNum"), dRow("SalesRepName"), dRow("mgrid"), "=""" & dRow("midValue") & """", dRow("dba"), dRow("sysDate"), dRow("statusID"))
Next index