在我的项目中,我需要删除DataTable中的所有记录,所以我尝试了这段代码:
while (DataTable1.Rows.Count > 0)
DataTable1.Rows[0].Delete();
但是这是一个无限循环,似乎在Delete()
语句后Rows.Count
没有变化。
看来记录仍在那里,但标记为删除 所以我改变了我的计数:
int count = DataTable1.Select("", "", DataViewRowState.CurrentRows).Count();
所以现在我可以像这样改变我的循环
int count = DataTable1.Select("","",DataViewRowState.CurrentRows).Count();
while (count > 0)
{
DataTable1.Rows[0].Delete(); // THIS IS WRONG NOW
count = DataTable1.Select("","",DataViewRowState.CurrentRows).Count();
}
现在计数会按预期倒计时,但现在我的Rows[0].Delete()
语句出现问题。
它将一遍又一遍地删除同一行。
所以我的问题是,如何找到未删除的第一行并将其删除? 换句话说,评论的行//这是错误的我可以在那条线上使用什么?
或者有更好的方法吗?我尝试了DataTable1.Clear(),但在执行adapter.Update(DataTable1);
答案 0 :(得分:2)
如果要标记所有删除的行,为什么不使用普通的foreach
循环?
foreach(DataRow row in DataTable1.Rows) row.Delete();
Delete
会将此行标记为Deleted
,这对DataAdapter很重要,他们会调用他们的DeleteCommand
从数据库中删除此行。但它不会立即从DataTable
中删除该行。如果要将其从表格中删除,请使用DataTable.Rows.RemoveAt(index)
。