我正在尝试使用for循环访问和更改数据表中下一行的值,但是我收到错误:
System.IndexOutOfRangeException: There is no row at position 247.
我知道在最后一个循环中,它不会找到下一行。但我检查它是否存在,然后只修改值,但它不起作用 这是我的代码:
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow _row = dt.Rows[i];
if (_row[1].ToString() != "" && _row[0].ToString() != "")
{
int temp = i + 1;
if (dt.Rows[temp].GetType() == typeof(DataRow))
{
dt.Rows[temp][0] = _row[0].ToString();
}
}
}
任何帮助将不胜感激。 感谢。
答案 0 :(得分:4)
这会失败,因为没有要获取的行,所以即使在调用GetType
之前它也会失败:
if (dt.Rows[temp].GetType() == typeof(DataRow))
// ^^^^^^^^^^^^^ <-- throws an IndexOutOfRangeException here
相反,你可以迭代到少于行数的一个:
for (int i = 0; i < dt.Rows.Count - 1; i++)
{
DataRow row = dt.Rows[i];
DataRow nextRow = dt.Rows[i + 1];
// ...
}
如果你想为最后一行做一些特殊的事情,你可以在循环之后做到这一点。