从DataTable中删除行时出错:“X位置没有行。”

时间:2013-11-12 11:15:16

标签: vb.net datatable runtime-error row

尝试从数据表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块我发现每当错误发生时,索引变量i的值等于dt.Rows.Count,这可能是错误的原因。但是,我不清楚i如何能够假设这个值,因为我从dt.Rows.Count -1 循环。
知道我在这里做错了什么吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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