Asp.net 对于每个循环错误:集合已修改;枚举操作可能无法执行
在数据行中循环时遇到错误。我搜索了这么多,尝试了解决方案,但没有运气 收集被修改;枚举操作可能无法执行。Asp.net 对于每个循环错误:集合已修改;枚举操作可能无法执行,asp.net,vb.net,datarow,Asp.net,Vb.net,Datarow,在数据行中循环时遇到错误。我搜索了这么多,尝试了解决方案,但没有运气 收集被修改;枚举操作可能无法执行。 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"),
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
”导致收集的内容被修改;枚举操作可能无法执行。如何解决此错误?您正在向正在枚举的集合添加项。从逻辑上讲,它将无限循环。这种情况不可能发生。如果您真的想这样做,请通过为数据创建
结构
或类
将其一分为二,将项目添加到列表中,然后在列表中循环并将项目添加到表中。您将项目添加到正在枚举的集合中。从逻辑上讲,它将无限循环。这种情况不可能发生。如果您真的想这样做,请通过为数据创建结构
或类
将其一分为二,将项目添加到列表中,然后在列表中循环并将项目添加到表中。更新时不能枚举集合。即使这段代码确实有效,它也会永远运行,因为您不断添加越来越多的行,并且它会不断枚举它们
您可以稍微改变您的方法,并通过使用带有索引计数器和固定上限的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
更新集合时不能枚举集合。即使这段代码确实有效,它也会永远运行,因为您不断添加越来越多的行,并且它会不断枚举它们 您可以稍微改变您的方法,并通过使用带有索引计数器和固定上限的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