设为首页 加入收藏

TOP

多个DataTable的合并成一个新表 (一)
2014-11-23 19:38:43 来源: 作者: 【 】 浏览:37
Tags:多个 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)先添加第一个表,再添加第二个表

///

/// 将两个列不同(结构不同)的DataTable合并成一个新的DataTable

///

/// 表1

/// 表2

/// 合并后新的表名

/// 合并后的新表

private DataTable UniteDataTable(DataTable DataTable1, DataTable DataTable2, string DTName)

{

//克隆DataTable1的结构

DataTable newDataTable = DataTable1.Clone();

for (int i = 0; i < DataTable2.Columns.Count; i++)

{

//再向新表中加入DataTable2的列结构

newDataTable.Colum

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇sqlite3简介及常用查询语句的应用 下一篇mysql数据库(基础)笔记

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: