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