C#中刪除DataTable中的行的方法
1、在C#
中,如果要刪除DataTable
中的某一行,大約有以下幾種辦法:
- 使用
DataTable.Rows.Remove(DataRow)
,或者DataTable.Rows.RemoveAt(index);
可以直接刪除行 datatable.Rows[i].Delete()
。Delete()
之後需要datatable.AccepteChanges()
方法確認完全刪除,因為Delete()只是將相應列的狀態標誌為刪除,還可以通過datatable.RejectChanges()
回滾,使該行取消刪除。- 在刪除
DataTable
中的行的時候,每刪除一行,DataTable
中所有行的索引都會發生改變。在迴圈刪除DataTable.Row
的時候不能使用foreach
。使用foreach
進行迴圈的時候,是不允許Table
有刪除和新增操作的。 - 如果是按某列為條件進行刪除,則每刪完一行,整個
Table
的index
就會立即發生變化,等於Table
已經變成了一個新的表。但是索引卻已經加1了。於是會造成第一列永遠匹配不到。因此,每刪除完一行,要跟著判斷第一行是否滿足刪除條件。 - 如果要刪除
DataTable
中的多行,應該採用倒序迴圈DataTable.Rows
。因為正序刪除時索引會發生變化。程式發生異常,很難預料後果。(不要在迴圈裡使用myDataTable.Rows.RemoveAt(i)
.因為每刪除一行後.i的值會增加,但行數會是減少了.這麼做一定會出錯.因此要遍歷資料,使用Remove
方式時,要倒序的遍歷)
int count = ds.Tables[0].Rows.Count;
for (int i = count -1; i >=0; i--)
{
ds.Tables[0].Rows.RemoveAt(i);
}
總結:
delete和remove
Delete
的使用是datatable.Rows[i].Delete();
Remove
的使用是datatable.Rows.Remove(datatable.Rows[i]);
- 這兩個的區別是,使用
delete
後,只是該行被標記為deleted
,但是還存在,用Rows.Count
來獲取行數時,還是刪除之前的行數.需要使用datatable.AcceptChanges()
方法來提交修改.
而Remove
方法則是直接刪除.(有時候發現使用ds.Tables[0].Rows[i].Delete();
資料行也被直接刪除了,原因是在建立datatable
時沒有執行AcceptChanges
這個方法,那麼在delete
時,不會標記,會直接刪除掉。) - 如果在
for
迴圈裡刪除行的話,最好是使用delete
方法,不然會出現count
變化的情況.迴圈完後再使用AcceptChanges()
方法提交修改,刪除掉標記為deleted
的行
相關文章
- C# 批次刪除Excel中的重複行C#Excel
- c#刪除有序陣列中的重複項C#陣列
- Linux 中刪除目錄的多種方法Linux
- Python 中刪除列表元素的三種方法Python
- PHP從陣列中刪除元素的方法PHP陣列
- 從Redis中刪除大集合物件的方法Redis物件
- DataTable中的select()用法
- linux中crontab計劃任務怎麼刪除?linux中crontab計劃任務的刪除方法Linux
- phalcon框架中的軟刪除框架
- JavaScript刪除核取方塊選中的表格行JavaScript
- js中dom節點刪除remove方法JSREM
- 從電腦中刪除勒索軟體的5種方法
- datatable.js之tab切換(新增,刪除)JS
- 將DataTable一行放入另一個DataTable中(筆記)筆記
- Python-PyCharm中的專案移除 已經完全刪除的方法PythonPyCharm
- 刪除檔案中的數字
- PHP刪除字串中的逗號PHP字串
- JavaScript刪除字串中的指定字元JavaScript字串字元
- 怎麼刪除電腦中開啟的檔案記錄?刪除電腦中開啟的檔案記錄方法教程
- Oracle中刪除表中的重複資料Oracle
- 在 Linux 中如何刪除檔案中的空行Linux
- 從Bash中的字串中刪除固定的字首/字尾字串
- C#獲取變更過的DataTable記錄的實現方法C#
- 刪除tensor中不是1的維度
- Python刪除列表中的非字母字元Python字元
- Python如何刪除csv中的內容Python
- 如何刪除springboot中的子專案Spring Boot
- PyQt5刪除QListWidget中的itemQT
- 如何永久刪除Mac中的檔案?Mac
- 透過C#在Word中插入或刪除分節符C#
- WPF中的ListBox怎麼新增刪除按鈕並刪除所在行
- Android 中 WebView 的除錯方法AndroidWebView除錯
- 陣列的方法-新增刪除陣列
- mysql 刪除表中重複的資料MySql
- 在 CentOS 8 中刪除舊的 Linux 核心CentOSLinux
- iptables刪除命令中的相關問題
- 刪除 IntelliJ Idea 中自定義的 Maven ArchetypeIntelliJIdeaMaven
- 刪除排序陣列中的重複項排序陣列