我直接用Add方法加到另一个表的Rows属性就会出错说此行已经在另一个表中

解决方案 »

  1.   

    需要克隆一下这个数据行,然后再添加,在DataTable中数据行是不允许添加到的别的表的,如果有多个DataTable的行引用指向某一个数据行,那么会导致数据的不安全。
      

  2.   

    targetTable.Rows.Add( rowToCopy.ItemArray );
      

  3.   

    例如从ta复制第5行到第10行到tb,你可以写(假设列名相同):            for (int i = 4; i < 9; i++)
                {
                    DataRow dr = tb.NewRow();
                    for (int j = 0; j < ta.Columns.Count; j++)
                        dr[ta.Columns[j].ColumnName] = ta.Rows[i][j];
                    tb.Rows.Add(dr);
                }
      

  4.   

    如果两个表的列名还不同,那么不要写    dr[ta.Columns[j].ColumnName]而要根据逻辑对应关系做好转换。基本上,从“一个表复制到另一个表”要做一些“通用”设计功夫,不要想当然,性能不是唯一重要的事情。
      

  5.   

    ImportRow也可以。但是ImportRow 比较复杂一些,它不用在简单地复制值,而是复制复杂的RowState的时候。