簡體   English   中英

為什么刪除行后DataTable.Rows.Count不改變?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM