C#中 如何刪除datatable中的一行數據


https://zhidao.baidu.com/question/203375052301216525.html

在C#中,如果要刪除DataTable中的某一行,大約有以下幾種辦法:

1,使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows.RemoveAt(index);可以直接刪除行

2,datatable.Rows[i].Delete()。Delete()之后需要datatable.AccepteChanges()方法確認完全刪除,因為Delete()只是將相應列的狀態標志為刪除,還可以通過datatable.RejectChanges()回滾,使該行取消刪除。

只是delete掉的效果如下:

3、在刪除DataTable中的行的時候,每刪除一行,DataTable中所有行的索引都會發生改變。在循環刪除DataTable.Row的時候不能使用foreach。使用foreach進行循環的時候,是不允許Table有刪除和添加操作的。

4、如果是按某列為條件進行刪除,則每刪完一行,整個Table的index就會立即發生變化,等於Table已經變成了一個新的表。但是索引卻已經加1了。於是會造成第一列永遠匹配不到。因此,每刪除完一行,要跟着判斷第一行是否滿足刪除條件。

如果要刪除DataTable中的多行,應該采用倒序循環DataTable.Rows。因為正序刪除時索引會發生變化。程式發生異常,很難預料后果。

for (int i = dt.Rows.Count - 1; i >= 0; i--)
{
          dtOGBHIS.Rows.RemoveAt(i);
 }

總結: 

  1. delete和remove

  2. Delete的使用是 datatable.Rows[i].Delete();

  3. Remove的使用是datatable.Rows.Remove(datatable.Rows[i]);

  4. 這兩個的區別是,使用delete后,只是該行被標記為deleted,但是還存在,用Rows.Count來獲取行數時,還是刪除之前的行數.需要使用datatable.AcceptChanges()方法來提交修改.

  5. 而Remove方法則是直接刪除.

  6. 如果在for循環里刪除行的話,最好是使用delete方法,不然會出現count變化的情況.循環完后再使用AcceptChanges()方法提交修改,刪除掉標記為deleted的行 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM