1、首先你这种写法是错误的,line.Remove(0);这只是要删除字符串中的数据,而非文件,相当于刻舟求剑,总体思路为删除一行后重写,这段代码是在你基础上改的,觉得不妥的地方可以自己修改一下再
2、DataRow.Delete() 只是将对应行的的状态(DataRowState)标识为删除,数据可以通过DataTable.RejectChanges() 方法实现行状态的回滚,进而恢复数据。
3、DataRowState状态改变一次。 如果该行的 RowState 为 Added,则在调用 AcceptChanges 时,RowState 将变为 肛舀辨乔Detached,并且将从表中移除该行。
4、 在对现有的 DataRow 使用 Delete 方法后,RowState 将变为 Deleted。 在调用 AcceptChanges 之前,它一直保持为 Deleted。 此时,将从表中移除 DataRow。
5、Rows.Remove() :该行中的所有数据将全部丢失,等同于先调用DataRow.Delete() 方法,再调用 AcceptChanges()方法。DataRowState状态改变两次。
6、使用的场合不同:当数据需要使用DataAdapter.Update() 来更新的时候,不能使用Rows.Remove() 方法,飧肇苡卫只能使用DataRow.Delete() 方法。因为Rows.Remove() 需要根据DataRowState 的状态来更新数据。
7、和循环结构一起使用, Rows.Remove() 方法,每执行一次都会导致DataTable.Count 发生变化,而且每一行的行所以也会发生变化。
8、DataRow.Delete() 方法:在调用 AcceptChanges()方法之前,DataTable.Count 和每一行的行索引不会发生变化。