1

尝试从数据表中删除行时出现以下运行时错误dt

位置 24
没有行。位置 20 没有行。

这是代码(第 3 行导致错误):

For i As Integer = dt.Rows.Count -1 To 0 Step -1    
    For Each num As Integer In numsArray
   -->  If dt.Rows(i).Item("number") = num Then
            dt.Rows(i).Delete()
        End If
    Next
Next

使用Try-Catch块我发现每当发生错误时索引变量的值iequals dt.Rows.Count,这可能是错误的原因。但是,我不清楚如何i假设这个值,因为我从dt.Rows.Count -1.
知道我在这里做错了什么吗?

4

2 回答 2

2

您正在迭代要从中删除的行集合;这就像锯断你站立的梯子。

试试这个代码:

For Each num As Integer In numsArray
    For i As Integer = dt.Rows.Count -1 To 0 Step -1    
        If dt.Rows(i).Item("number") = num Then
            dt.Rows(i).Delete()
            Exit For
        End If
    Next
Next
于 2013-11-12T11:35:37.783 回答
1

问题是您正在删除行并且您正在继续使用 bucle:

For i As Integer = dt.Rows.Count -1 To 0 Step -1    
    For Each num As Integer In numsArray
       If dt.Rows(i).Item("number") = num Then
            dt.Rows(i).Delete()  
            Exit For ' You need to stop looking for a number in this row
        End If
    Next
Next
于 2013-11-12T11:31:30.170 回答