Datatable刪除行的Delete和Remove方法的區(qū)別介紹
1、在C#中,如果要?jiǎng)h除DataTable中的某一行,大約有以下幾種辦法:
•使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows.RemoveAt(index);可以直接刪除行
•datatable.Rows[i].Delete()。Delete()之后需要datatable.AccepteChanges()方法確認(rèn)完全刪除,因?yàn)镈elete()只是將相應(yīng)列的狀態(tài)標(biāo)志為刪除,還可以通過(guò)datatable.RejectChanges()回滾,使該行取消刪除。
•在刪除DataTable中的行的時(shí)候,每刪除一行,DataTable中所有行的索引都會(huì)發(fā)生改變。在循環(huán)刪除DataTable.Row的時(shí)候不能使用foreach。使用foreach進(jìn)行循環(huán)的時(shí)候,是不允許Table有刪除和添加操作的。
•如果是按某列為條件進(jìn)行刪除,則每刪完一行,整個(gè)Table的index就會(huì)立即發(fā)生變化,等于Table已經(jīng)變成了一個(gè)新的表。但是索引卻已經(jīng)加1了。于是會(huì)造成第一列永遠(yuǎn)匹配不到。因此,每刪除完一行,要跟著判斷第一行是否滿足刪除條件。
•如果要?jiǎng)h除DataTable中的多行,應(yīng)該采用倒序循環(huán)DataTable.Rows。因?yàn)檎騽h除時(shí)索引會(huì)發(fā)生變化。程式發(fā)生異常,很難預(yù)料后果。
總結(jié):
delete和remove
•Delete的使用是 datatable.Rows[i].Delete();
•Remove的使用是datatable.Rows.Remove(datatable.Rows[i]);
•這兩個(gè)的區(qū)別是,使用delete后,只是該行被標(biāo)記為deleted,但是還存在,用Rows.Count來(lái)獲取行數(shù)時(shí),還是刪除之前的行數(shù).需要使用datatable.AcceptChanges()方法來(lái)提交修改.
•而Remove方法則是直接刪除.
•如果在for循環(huán)里刪除行的話,最好是使用delete方法,不然會(huì)出現(xiàn)count變化的情況.循環(huán)完后再使用AcceptChanges()方法提交修改,刪除掉標(biāo)記為deleted的行
相關(guān)文章
VS2012下QT creator登錄對(duì)話框設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了VS2012下QT creator登錄對(duì)話框的設(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06ASP.Net WebAPI與Ajax進(jìn)行跨域數(shù)據(jù)交互時(shí)Cookies數(shù)據(jù)的傳遞
本文主要介紹了ASP.Net WebAPI與Ajax進(jìn)行跨域數(shù)據(jù)交互時(shí)Cookies數(shù)據(jù)傳遞的相關(guān)知識(shí)。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-05-05IIS實(shí)現(xiàn)反向代理時(shí)Cookie域的設(shè)置方法
這篇文章主要給大家介紹了關(guān)于IIS實(shí)現(xiàn)反向代理時(shí)Cookie域的設(shè)置方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04C# 文件保存到數(shù)據(jù)庫(kù)中或者從數(shù)據(jù)庫(kù)中讀取文件
在編程中我們常常會(huì)遇到“將文件保存到數(shù)據(jù)庫(kù)中”這樣一個(gè)問(wèn)題,雖然這已不是什么高難度的問(wèn)題,但對(duì)于一些剛剛開(kāi)始編程的朋友來(lái)說(shuō)可能是有一點(diǎn)困難。2009-03-03.NET開(kāi)發(fā)人員關(guān)于ML.NET的入門學(xué)習(xí)
隨著谷歌,F(xiàn)acebook發(fā)布他們的工具機(jī)器學(xué)習(xí)工具Tensorflow 2和PyTorch,微軟也發(fā)布了ML.NET 1.0??梢哉f(shuō)2019年是機(jī)器學(xué)習(xí)社區(qū)普及化的一年,下面小編向大家簡(jiǎn)單介紹一下關(guān)于ML.NET的入門學(xué)習(xí)2019-05-05WPF數(shù)據(jù)驅(qū)動(dòng)修改綁定
這篇文章介紹了WPF數(shù)據(jù)驅(qū)動(dòng)修改綁定的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04