欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » C# » 正文

热门阅读

利用DataTable.Merge与DataSourceDataTable.ImportRow合并两个DataTable中的行

创建时间:2011年08月06日 11:03  阅读次数:(20596)
分享到:
本章不比较各方法之间的性能,仅给出处理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
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论3条
  • #1楼  评论人:C#爱好者  评论时间:2012-6-21 10:33:33
  • ImportRow的性能确实要比Merge要高,只是Merge使用起来更加方便而已。
  • #2楼  评论人:Wyf  评论时间:2012-6-21 10:59:58
  • 能有示例吗?欢迎讨论。
  • #3楼  评论人:a  评论时间:2015-9-4 16:56:21
  • <a href='#'>OOO</a>
发表评论:
留言人:
内  容:
请输入问题 76+18=? 的结果(结果是:94)
结  果: