zoukankan      html  css  js  c++  java
  • 删除DataTable中除指定行以外的行,集合元素删除操作,倒序删除

    https://www.cnblogs.com/zhangchenliang/archive/2010/08/02/1790600.html

    简介:这是删除DataTable中除指定行以外的行 - .NET技术 / C#的详细页面,介绍了和c/c++,删除DataTable中除指定行以外的行 - .NET技术 / C#有关的知识,加入收藏请按键盘ctrl+D,谢谢大家的观看!要查看更多有关信息,请点击此处

    假设有一个DataTable的数据如下所示:

    ID NAME MEMO
    1 AA 1111
    2 BB 2222
    3 CC 3333
    4 DD 4444
    5 EE 5555
    6 FF 6666
    7 GG 7777
    .. .. ....

    要删除ID包含在集合(1,3,5,6,......)中以外的行,
    也就是说保留ID包含在集合(1,3,5,6,......)中的行,其他的行删除.
    回答 1

    ------其他回答(1分)---------

    dt.Rows[i].Delete()
    i你知道的
    ------其他回答(1分)---------

    DELETE FROM table WHERE id NOT IN (...)
    ------其他回答(1分)---------

    你可以用DataView过滤!就可以只看你要的数据!
    C# code

    private void BindDataGrid()
    {
    DataTable table = new DataTable();

    // Insert code to populate a DataTable with data.
    
    // Bind grid to DataTable.
    dataGrid1.DataSource = table;
    

    }

    private void ChangeRowFilter()
    {
    DataTable gridTable = (DataTable) dataGrid1.DataSource;

    // Set the RowFilter to display a company names that 
    // begin with A through I..
    gridTable.DefaultView.RowFilter = "CompanyName < 'I'";
    

    }

    ------其他回答(1分)---------

    引用 3 楼 lzsh0622 的回复:

    DELETE FROM table WHERE id NOT IN (...)

    删除后 重新连接数据库
    ------其他回答(1分)---------

    DELETE FROM table WHERE id NOT IN (1,3,5,6,......)
    这个就可以
    ------其他回答(1分)---------

    C# code

    private void button1_Click(object sender, EventArgs e)
    {
    string[] ids="1,3,5".Split(',');
    DataTable dt = new DataTable();
    dt.Columns.Add("ID");
    dt.Columns.Add("NAME");
    dt.Columns.Add("MEMO");
    dt.Rows.Add("1", "AA", "1111");
    dt.Rows.Add("2", "BB", "1111");
    dt.Rows.Add("3", "CC", "1111");
    dt.Rows.Add("4", "DD", "1111");
    dt.Rows.Add("5", "EE", "1111");

    for (int i = dt.Rows.Count - 1; i >= 0; i--)
    {
        if (Array.IndexOf(ids,dt.Rows[i]["id"].ToString())>=0)
        {
            dt.Rows[i].Delete();
         }
    }
    

    }

    ------其他回答(1分)---------

    view.Table = DataSet1.Tables["Suppliers"];
    view.AllowDelete = true;
    view.AllowEdit = true;
    view.AllowNew = true;
    view.RowFilter = "ID NOT IN '1,2,3,4,5,6'";

    ------其他回答(1分)---------

    C# code

    view.Table = DataSet1.Tables["Suppliers"];
    view.AllowDelete = true;
    view.AllowEdit = true;
    view.AllowNew = true;
    view.RowFilter = "ID NOT IN '1,2,3,4,5,6'";

    我猜过去,你希望做数据过滤,那为什么不用DataView做过滤?
    ------其他回答(66分)---------

    C# code

            DataTable dt = new DataTable("Data");
            dt.Columns.Add("Id", typeof(int));
            dt.Columns.Add("Name", typeof(string));
    
            dt.Rows.Add(1, "小三1");
            dt.Rows.Add(2, "小三2");
            dt.Rows.Add(3, "小三3");
            dt.Rows.Add(4, "小三4");
            dt.Rows.Add(5, "小三5");
            dt.Rows.Add(6, "小三6");
            dt.Rows.Add(7, "小三7");
    
            //保留的行
            string[] ids = { "1", "3", "5" };
            // 获取删除的行集合
            DataRow[] drsDel = dt.Select(string.Format("Id not in ({0})", string.Join(",", ids)));
            //直接在集合中删除
            foreach (DataRow drDel in drsDel)
            {
                dt.Rows.Remove(drDel);
            }
    

    ------其他回答(1分)---------

    学习,帮顶!~
    ------其他回答(1分)---------

    帮你顶
    ------其他回答(11分)---------

    for (int j = 0; j < myDataRowsError.Length; j++)
    {
    //m_myDataSet.Tables[m_strMyDataSource].Rows.Remove(myDataRowsError[j]);//如果用这句数据库里的数据并没有删除掉
    myDataRowsError[j].Delete();//用这句数据库里的数据才会删除掉
    }

    集合内删除,这种写法就不对。 Delete()能删除也是侥幸,出错的地方没让你遇上。
    ------其他回答(11分)---------

    "调用了Update可是Remove数据里就是没删除掉用Delete就可以,非常奇怪"

    如果要Update更新数据库,要调用 Delete() 方法才行,并且之后不能调用 AcceptChanges() 方法;

    MSDN:
    Remove()方法:当移除行时,该行中的所有数据都将丢失。还可以调用 DataRow 类的 Delete 方法来标记某行以供移除。调用 Remove 等同于先调用 Delete 再调用 AcceptChanges。

    ------其他回答(2分)---------

    C# code

    string[] ids="1,3,5".Split(','); // 需要删除的ID号,存入数据组
    for (int i = dt.Rows.Count - 1; i >= 0; i--) // 集合元素删除操作,倒序删除
    {
    if (Array.IndexOf(ids,dt.Rows[i]["id"].ToString())>=0) // 当前id号是否属于删除范围
    {
    dt.Rows[i].Delete();
    }
    }

    这个方法中用到: Array.IndexOf ,String.Split , 倒序的for结构

    DataTable如何删除特定id的行

    DataTable dt = dataSet1.table1.GetAllRows();
    DataRow[] foundRow = dt.Select("catalogid = 0", "");
    foreach (DataRow row in foundRow)
    {
    dt.Rows.Remove(row);
    }
    GridView1.DataSource = dt;
    GridView1.DataBind();

  • 相关阅读:
    Sublime Text 最佳插件列表(转)
    MyBatis入门(六)---mybatis与spring的整合
    MyBatis入门(五)---延时加载、缓存
    MyBatis入门(三)---多个参数
    MyBatis入门(二)---一对一,一对多
    AccessRandomFile多线程下载文件
    MyBatis入门(一)---基本使用
    JAVA基础学习day27--反射机制
    简明 Vim 练级攻略(转)
    JAVA基础学习day26--正则表达式
  • 原文地址:https://www.cnblogs.com/sunny3158/p/14363809.html
Copyright © 2011-2022 走看看