http://blog.csdn.net/huyu107/article/details/53509171
概述
从一个DataTable中取一行放到另一个DataTable里报错: 该行已经属于另一个表。
第一种方法:
DataTable dt = new DataTable();
dt = ds.Tables["All"].Clone();//克隆All的结构传递给dt
DataRow[] dr=this.dataSet31.Tables["Product"].Select("bc=1"); //通过条件得到符合条件的行
for(int i=0;i<dr.Length;i++) { //将数组元素加入表... dt.Rows.Add(dr[i]);//出错提示为:该行已经属于另一个表 } // 修改后 DataTable dt = new DataTable(); dt = ds.Tables["All"].Clone();//克隆All的结构传递给dt DataRow[] dr=this.dataSet31.Tables["Product"].Select("bc=1"); //通过条件得到符合条件的行 for(int i=0;i<dr.Length;i++) { //将数组元素加入表... dt.Rows.Add(dr[i].ItemArray); }
第二种方法:
DataTable dt1 = new DataTable();
DataTable calcdt = new DataTable();
// dt1只是获取表结构,无数据; // calcdt 有表结构,有数据 // 原方法 foreach (DataRow dr in calcdt.Rows) { dt1.Rows.Add(dr); } // 改进后的方法 DataRow drcalc; foreach (DataRow dr in calcdt.Rows) { drcalc = dt1.NewRow(); drcalc.ItemArray = dr.ItemArray; dt1.Rows.Add(drcalc); }