尝试从数据表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
循环。
知道我在这里做错了什么吗?
答案 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