zoukankan      html  css  js  c++  java
  • 转载文章——Datatable删除行的Delete和Remove方法

    在C#中,如果要删除DataTable中的某一行,大约有以下几种办法:

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

    2,datatable.Rows[i].Delete()。Delete()之后需要datatable.AccepteChanges()方法确认完全删除,因为Delete()只是将相应列的状态标志为删除,还可以通过datatable.RejectChanges()回滚,使该行取消删除。

    只是delete掉的效果如下:

    在删除DataTable中的行的时候,每删除一行,DataTable中所有行的索引都会发生改变。在循环删除DataTable.Row的时候不能使用foreach。使用foreach进行循环的时候,是不允许Table有删除和添加操作的。
    如果是按某列为条件进行删除,则每删完一行,整个Table的index就会立即发生变化,等于Table已经变成了一个新的表。但是索引却已经加1了。于是会造成第一列永远匹配不到。因此,每删除完一行,要跟着判断第一行是否满足删除条件。

     

    2011-9-8

    如果要删除DataTable中的多行,应该采用倒序循环DataTable.Rows。因为正序删除时索引会发生变化。程式发生异常,很难预料后果。

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

    总结: 

    delete和remove

    Delete的使用是 datatable.Rows[i].Delete();  需使用datatable.AccepteChanges()确认删除!

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

    这两个的区别是,使用delete后,只是该行被标记为deleted,但是还存在,用Rows.Count来获取行数时,还是删除之前的行数.需要使用datatable.AcceptChanges()方法来提交修改.

    而Remove方法则是直接删除.

    如果在for循环里删除行的话,最好是使用delete方法,不然会出现count变化的情况.循环完后再使用AcceptChanges()方法提交修改,删除掉标记为deleted的行 

    PS: 文章转载自:Datatable删除行的Delete和Remove方法  , 【主要怕好文丢失】

     

  • 相关阅读:
    微信小程序 单选按钮 最佳
    微信小程序 单选按钮的实现
    微信小程序 单选框实现
    Java Code To Create Pyramid and Pattern
    Java language
    npm Err! Unexpected end of JSON input while parsing near
    Node.js Express FrameWork Tutorial
    Higher-Order Function Examples
    Create First HTTP Web Server in Node.js: Complete Tutorial
    Node.js NPM Tutorial: Create, Publish, Extend & Manage
  • 原文地址:https://www.cnblogs.com/generalLi/p/6164302.html
Copyright © 2011-2022 走看看