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); }
