本章不比较各方法之间的性能,仅给出处理DataTable行合并的几种常用方法:
一、两个DataTable的结构一样:
1,利用DataTable.Row.ItemArray.CopyTo功能,示例代码如下:
DataTable DataTable1 = new DataTable();
DataTable DataTable2 = new DataTable();
DataTable newDataTable = DataTable1.Clone();
object[] obj = new object[newDataTable.Columns.Count];
for (int i = 0; i < DataTable1.Rows.Count; i++)
{
DataTable1.Rows[i].ItemArray.CopyTo(obj,0);
newDataTable.Rows.Add(obj);
}
for (int i = 0; i < DataTable2.Rows.Count; i++)
{
DataTable2.Rows[i].ItemArray.CopyTo(obj,0);
newDataTable.Rows.Add(obj);
}
2,利用DataSourceDataTable.ImportRow功能,示例代码如下:
DataTable DataTable1 = new DataTable();
DataTable DataTable2 = new DataTable();
for (int i = 0; i < DataTable1.Rows.Count; i++)
{
DataTable2.ImportRow(DataTable1.Rows[i]);
}
二、两个DataTable的结构不一样
思路如下:(代码太长,就不列出了)
先new出一个新的DataTable,然后将两个DataTable的列复制到新的DataTable中,再将两个DataTable的数据逐行逐列的复制到新的DataTable中。
三、本章我们重点研究如何利用
DataTable.Merge的方法来合并多个DataTable中数据,因为该方法使用起来很简单,先看看
DataTable.Merge的定义与重载方法:
定义:将指定的 DataTable 与当前的 DataTable 合并。
重载方法:
1,
DataTable.Merge(DataTable) 将指定的 DataTable 与当前的 DataTable 合并。
2,
DataTable.Merge(DataTable, Boolean) 将指定的 DataTable 与当前的 DataTable 合并,指示是否在当前的 DataTable 中保留更改。
3,
DataTable.Merge(DataTable, Boolean, MissingSchemaAction) 将指定的 DataTable 与当前的 DataTable 合并,指示是否在当前的 DataTable 中保留更改以及如何处理缺失的架构。
示例代码如下:
如果只想保留其中一个表的结构:
DataTable DataTable1 = new DataTable();
DataTable DataTable2 = new DataTable();
DataTable2 .Merge(dt, true,MissingSchemaAction.Ignore);
以上代码只保留DataTable2的结构
如果想合并表结构
DataTable DataTable1 = new DataTable();
DataTable DataTable2 = new DataTable();
DataTable2 .Merge(dt, true, MissingSchemaAction.Add);
注意:网上存在很多对Merge的不认可,主要是认为Merge的性能太差,推荐选用ImportRow,编辑并未专门测试过Merge与ImportRow之间的性能差,在此不作评价。t