zoukankan      html  css  js  c++  java
  • C#中DataTable删除多条数据

    实际使用

    //循环DataTable,删除数据
    for(int i = dtPreview.Rows.Count - 1; i >= 0; i--)
    {
        if(listSelected.Contains(i))
        {
            dtPreview.Rows[i].Delete();
        }
    }
    dtPreview.AcceptChanges();
     

    说明

    即使使用的是Rows[i].Delete();方法,仍然有问题。
    调试时发现执行玩Delete()方法,就会把DataTable中的数据删除掉,导致dtPreview.Rows.Count的值一直在变化。
    所以倒着循环,从最大的索引开始删除,这样删除后,被删除索引前面的索引不会发生变化。
     

    网上百度的结果

    //一般情况下我们会这么删除
    DataTable dt = new DataTable();
    for(int i = 0; i < dt.Rows.Count; i++)
    {
        if(99 % i == 0)
        {
            dt.Rows.RemoveAt(i);
        }
    }
    //但是这么删除会出现意外情况
    //当运行dt.Rows.RemoveAt(i)代码后DataTable的index会发生改变
    //且他的dt.Rows.Count也会改变
    //正确做法一
    for(int i = dt.Rows.Count - 1; i >= 0; i--)
    {
        if(99 % i == 0)
        {
            dt.Rows.RemoveAt(i);
        }
    }
    //正确做法二
    for(int i = 0; i < dt.Rows.Count; i++)
    {
        if(99 % i == 0)
        {
            dt.Rows[i].Delete();
        }
    }
    dt.AcceptChanges(); //提交
    //dt.RejectChanges();//回滚
  • 相关阅读:
    Django之Models(一)
    数据库学习之事务
    pymysql的使用
    pymysql:Mysql拒绝从远程访问的解决办法
    Django之模板基础
    Django之视图函数总结
    POJ1942
    poj2115[扩展欧几里德]
    POJ1850&&POJ1496
    [Catalan数]1086 栈、3112 二叉树计数、3134 Circle
  • 原文地址:https://www.cnblogs.com/masonblog/p/12740715.html
Copyright © 2011-2022 走看看