在循环中使用.removeat删除DataTable行错误
本文关键字:删除 DataTable 错误 removeat 循环 | 更新日期: 2023-09-27 18:08:25
我正在做一个程序,不知道如何解决我现在遇到的这个问题。
当我运行这段代码:
int maxRows = AfdelingDT.Rows.Count;
maxRows -= 1;
for(int i = 0;i <= maxRows; i++)
{
if (Convert.ToInt16(AfdelingDT.Rows[i][0]) == Convert.ToInt16(removeRowTB.Text))
{
AfdelingDT.Rows.RemoveAt(i);
}
}
我有一个错误,行不存在,如果我试图删除DataTable
中间的一行。
如果我运行表的最后一行的代码,我没有任何问题。
问题是,当您在循环中删除一行时,它会对该点之后的所有行重新编号,从而导致中断。
将代码改为从末尾到开始循环:
int maxRows = AfdelingDT.Rows.Count;
maxRows -= 1;
for(int i = maxRows;i >= 0; i--)
{
if (Convert.ToInt16(AfdelingDT.Rows[i][0]) == Convert.ToInt16(removeRowTB.Text))
{
AfdelingDT.Rows.RemoveAt(i);
}
}