表中有一个字段BoxId,但不是主键,现在要删除所有BoxId = 10009的数据,
int countshow = dtShow.Rows.Count;
for (int i = 0; i < countshow; i++)
if(dtShow.Rows[i].RowState != DataRowState.Deleted
&& (dtShow.Rows[i]["BoxId"].ToString() == "10009")
dtShow.Rows[i].Delete();
但是总是提示“不能通过已删除的行访问该行的信息”的错误,不知应该如何处理才好啊,总觉得这方法很笨,愿高人指点一下,能给出更好的删除办法也好,谢谢了。
int countshow = dtShow.Rows.Count;
for (int i = 0; i < countshow; i++)
if(dtShow.Rows[i].RowState != DataRowState.Deleted
&& (dtShow.Rows[i]["BoxId"].ToString() == "10009")
dtShow.Rows[i].Delete();
但是总是提示“不能通过已删除的行访问该行的信息”的错误,不知应该如何处理才好啊,总觉得这方法很笨,愿高人指点一下,能给出更好的删除办法也好,谢谢了。
我只希望标记为Delete状态就行了,因为后来要用到da.Update(dtShow),直接删除了是不是就不能更新了?
这是不对的,只能清除一个DataRow,不能清除多个。BoxId = 10009的记录可能有多个。
while (i < dtShow.Rows.Count)
{
if(dtShow.Rows[i]["BoxId"].ToString() == "10009")
{
dtShow.Rows[i].Delete();
continue;
}
i++;
}
for (int i = countshow-1; i >= 0; i--)
if(dtShow.Rows[i].RowState != DataRowState.Deleted
&& (dtShow.Rows[i]["BoxId"].ToString() == "10009")
dtShow.Rows[i].Delete();
有时候倒着循环可以,你调一下试试吧。从表的后面开始删除。