將DataTable一行放入另一個DataTable中(筆記)

阿木醬發表於2018-12-03

概述

從一個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);
}
複製程式碼

其他操作

1、刪除列

DataTable dt = XXX();

dt.Columns.Remove("Age");

dt.Columns.Remove("Sex");
複製程式碼

2、修改列標題

DataTable dt = XXX();

dt.Columns["Age"].ColumnName="年齡";

dt.Columns["Sex"].ColumnName="性別";
複製程式碼

3、調整列順序

DataTable dt = XXX();

dt.Columns["Age"].SetOrdinal(1);
複製程式碼

作者:阿蒙Amon
來源:CSDN
原文:blog.csdn.net/huyu107/art…
版權宣告:本文為博主原創文章,轉載請附上博文連結!

相關文章