vb.net - 当我循环 DataTable 中的所有行时出现 IndexOutOfRangeException
问题描述
Dim CurrentRow As DataRow
Dim NextRow As DataRow
For i = 0 To dt.Rows.Count - 1
'checks if taskid matches row id. if so then enter condition
If dt.Rows(i)("TaskID") = RowID Then
'needs to check if next row exist. if it does then get the next row . if not (hence its the final row get it)
If dt.Rows(i + 1) Is Nothing Then
CurrentRow = dt.Rows(i)
Else
NextRow = dt.Rows(i + 1)
End If
Exit For
End If
Next
我从字面上刷了互联网,但找不到有效的解决方案。我正在遍历这个数据表并检索下一行。但无论我做什么,总是会出现 dt.rows(i+1) 将不再继续进行的地方,因为它在该位置找不到任何行。我不明白的一件事是,如果 dt.rows(i+1) 像错误提示的那样返回空或不存在,那么你可以做一个简单的 if 条件来检查它是否没有。但我在这里得到这个输入图像描述
解决方案
想清楚。这段代码有什么作用:
For i = 0 To dt.Rows.Count - 1
它从第一行的索引循环到最后一行的索引。如果您在循环中的意图是将当前索引处的行与下一个索引处的行进行比较,那么循环到最后一行怎么可能有意义?最后一行之后没有行,那么为什么要循环到最后一行?您需要循环到后面有一行的最后一行。很明显,这是倒数第二行。修复你的坏循环:
For i = 0 To dt.Rows.Count - 2
推荐阅读
- tensorflow - 如何在 LSTMCell 中应用层归一化
- python - Python对象代理问题:描述符和@staticmethod
- amcharts - 增加 AmCharts 中零线的笔画不透明度
- python - 是否有任何包可以模拟/伪造一个小数据集以便在 R/Python 中获得更多的行数?
- java - 有没有办法在不复制或不使用 Arraylist 的情况下扩展数组并动态增加数组大小?
- javascript - 如何在不使用新 API 的情况下获取 Instagram 照片
- excel - 使用 VBA Excel 生成 QR
- lambda - Soot - 无法为具有 lambda 表达式的 java 方法获取 soot cfg
- java - 向 InputDialog 添加注释
- kubernetes - 由于部署清单问题,无法进行掌舵安装