• 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();//回滚
  • 相关阅读:
    Python之路【第四十五篇】:django日更
    Python之路【第四十四篇】:django日更
    C++ 调用动态链接库
    博客园美化
    postgresql中的UUID
    使用rustup安装rust环境
    MySQL 查询做排名
    Docker
    CentOS安装Docker和基础操作
    切换CentOS7的yum源为阿里源
  • 原文地址:https://www.cnblogs.com/masonblog/p/12740715.html
Copyright © 2020-2023  润新知