多个DataTable的合并成一个新表
有时我们知道了两个DataTable1和DataTable2,我们希望将它们合并为一个新的DataTable(下面的例子中命名为了newDataTable),这就分为两种情况:DataTable1和DataTable2结构相同、DataTable1和DataTable2结构不同,下面分别介绍怎么进行合并。
一、DataTable1和DataTable2结构相同的情况,结构相同我们只需要把两者的数据罗列到一块就可以了
首先初始化相同结构DataTable(测试用的)
void InitDataTable1(DataTable dt)
{
dt.Columns.Add("student_no");
dt.Columns.Add("student_name");
dt.Rows.Add("001", "June");
dt.Rows.Add("002", "zhang");
dt.Rows.Add("003", "jun");
}
void InitDataTable2(DataTable dt)
{
dt.Columns.Add("student_no");
dt.Columns.Add("student_name");
dt.Rows.Add("111", "ABC");
dt.Rows.Add("222", "XYZ");
dt.Rows.Add("333", "OPQ");
}
合并方法1:用Rows.Add方法
DataTable newDataTable = DataTable1.Clone();
object[] obj = new object[newDataTable.Columns.Count];
//添加DataTable1的数据
for (int i = 0; i < DataTable1.Rows.Count; i++)
{
DataTable1.Rows[i].ItemArray.CopyTo(obj, 0);
newDataTable.Rows.Add(obj);
}
//添加DataTable2的数据
for (int i = 0; i < DataTable2.Rows.Count; i++)
{
DataTable2.Rows[i].ItemArray.CopyTo(obj, 0);
newDataTable.Rows.Add(obj);
}
合并方法2:用DataTable.ImportRow方法
//拷贝DataTable1的结构和数据
DataTable newDataTable = DataTable1.Copy();
//添加DataTable2的数据
foreach (DataRow dr in DataTable2.Rows)
{
newDataTable.ImportRow(dr);
}
其实添加DataTable1的结构和数据有两种方法
//克隆DataTable1的结构
DataTable newDataTable = DataTable1.Clone();
object[] obj = new object[newDataTable.Columns.Count];
//添加DataTable1的数据
for (int i = 0; i < DataTable1.Rows.Count; i++)
{
DataTable1.Rows[i].ItemArray.CopyTo(obj, 0);
newDataTable.Rows.Add(obj);
}
或者直接用自带的Copy方法 DataTable newDataTable = DataTable1.Copy();
二、DataTable1和DataTable2结构不同相同的情况,我们可以先向新表中添加DataTable1的数据,然后再向每行的后面添加添加DataTable2的数据,注意两者的行数不一定相同。
首先初始化相同结构DataTable(测试用的)
void InitDataTable1(DataTable dt)
{
dt.Columns.Add("student_no1");
dt.Columns.Add("student_name1");
dt.Rows.Add("001", "June");
dt.Rows.Add("002", "zhang");
//dt.Rows.Add("003", "jun");
}
void InitDataTable2(DataTable dt)
{
dt.Columns.Add("student_no2");
dt.Columns.Add("student_name2");
dt.Rows.Add("111", "ABC");
dt.Rows.Add("222", "XYZ");
dt.Rows.Add("222", "ASD");
}
方法(1)先添加第一个表,再添加第二个表
/// <summary>
/// 将两个列不同(结构不同)的DataTable合并成一个新的DataTable
/// </summary>
/// <param name="DataTable1">表1</param>
/// <param name="DataTable2">表2</param>
&