[英]Why does the DataTable.Rows.Count not change after deleting rows?
在我的項目中,我需要刪除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()
語句有Rows[0].Delete()
。
它將一遍又一遍刪除同一行。
所以我的問題是,如何找到未刪除的第一行並將其刪除?
換句話說,用//注釋的行現在不正確,我可以在該行使用什么?
還是有更好的方法來做到這一點? 我嘗試了DataTable1.Clear(),但是在執行adapter.Update(DataTable1);
時不會生成delete語句adapter.Update(DataTable1);
如果要標記所有行已刪除,為什么不使用普通的foreach
-loop?
foreach(DataRow row in DataTable1.Rows) row.Delete();
Delete
會將這一行標記為Deleted
,這對於DataAdapters很重要,它們將調用其DeleteCommand
來從數據庫中刪除該行。 但是它不會立即從DataTable
刪除該行。 如果要從表中刪除它,請使用DataTable.Rows.RemoveAt(index)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.