C# DataTable Select出来的数据行添加到另外的DataTable中

  C#通过DataTable.Select选出的数据行无法直接添加到另外一个DataTable中,会提示下面的错误

该行已经属于另一个表。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentException: 该行已经属于另一个表。

    DataTable dt1 = new DataTable();
    dt1.Columns.Add("CostName");
    dt1.Rows.Add("生物技术");
    dt1.Rows.Add("技术");
    dt1.Rows.Add("生技术");
    dt1.Rows.Add("生物技术科技");
    
    DataTable dt2  = dt1.Clone();
    DataRow[] drws = dt1.Select("CostName like '生物%'");
    foreach (DataRow item in drws)
    {
        dt2.Rows.Add(item);
    }

  如果你的表结构一直,可以使用DataRow.ItemArray属性来添加新行。

    foreach (DataRow item in drws)
    {
        dt2.Rows.Add(item.ItemArray);
    }

  C#将DataTable某一行添加到另外一个表格中方法可以有下面几种。下面代码来源:http://www.cnblogs.com/iamv/archive/2008/03/16/1108220.html

方法一:直接复制一个DataTable,然后清空数据(Column结构还保留),最后再用ImportRow()方法从dt中加入需要的Row;
            DataTable dt2 = new DataTable();
            dt2 = dt.Copy();
            dt2.Rows.Clear();
            dt2.ImportRow(dt.Rows[0]);//这是加入的是第一行

方法二:首先新的DataTable必须加入对应的列名(Column),一个空的没有结构的DataTable是不允许直接向里面加入一行的!

            for (int i = 0; i < dt.Columns.Count; i++)
            {
                dt2.Columns.Add(dt.Columns[i].ColumnName);//有重载的方法,可以加入列数据的类型
            }

然后就可以直接加入Row了!

//1
            DataRow drq = dt2.NewRow();
            drq.ItemArray = dt.Rows[0].ItemArray;//这是加入的是第一行
            dt2.Rows.Add(drq);
//2
            dt2.ImportRow(dt.Rows[0]);//这是加入的是第一行

 

过滤DataTable的Rows的重复行 简单方法

DataView view = table.DefaultView;
DataTable tagetTable= view.ToTable(true, "column1", "column2", ...);

 

加支付宝好友偷能量挖...


原创文章,转载请注明出处:C# DataTable Select出来的数据行添加到另外的DataTable中

评论(0)Web开发网
阅读(932)喜欢(0)Asp.Net/C#/WCF