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();//回滚
  • 相关阅读:
    sql 数据库还原脚本 (kill链接+独占
    最长回文字符串
    UVa 455 Periodic Strings
    UVa 1225 Digit Counting
    UVa 340 Master-Mind Hints
    UVa 10976
    UVa 725
    UVa 11059
    POJ1887 最长下降子序列
    最大连续子序列算法(数组的连续子数组最大和(首尾不相连))
  • 原文地址:https://www.cnblogs.com/masonblog/p/12740715.html
Copyright © 2011-2022 走看看