在C#中的Datatable类中,可以使用DataTable类的Merge方法对两个相同结构的DataTable对象进行求并集运算,将两个DataTable对象的数据行合并到其中一个DataTable变量中,或者说往其中一个DataTable对象中写入另一个DataTable对象的所有数据行。下列例子中使用到DataTable.Clone方法,DataTable.Clone方法用于赋值DataTable的结构信息,包括所有 DataTable 架构和约束。

Merge方法的签名为:void Merge(DataTable table);参数table代表被合并的DataTable对象变量。

举例如下,将newDt1对象的所有数据合并到dataDt对象中,具体代码如下:

          DataTable dataDt = new DataTable();

            dataDt.Columns.Add(new DataColumn() { ColumnName = "Name" });
dataDt.Columns.Add(new DataColumn() { ColumnName = "Id" });
dataDt.Columns.Add(new DataColumn() { ColumnName = "Memo", DataType=typeof(String) }); DataRow newRow = dataDt.NewRow();
newRow["Name"] = "李四";
newRow["Id"] = 22;
newRow["Memo"] = "后续新增";
dataDt.Rows.Add(newRow); var newDt1 = dataDt.Clone();//通过Clone方法快速复制dataDt的结构信息 DataRow inserDataRow = newDt1.NewRow();//根据newDt1的结构创建一个行对象DataRow
inserDataRow["Name"] = "王五";
inserDataRow["Id"] = 23;
inserDataRow["Memo"] = "第一行";
newDt1.Rows.InsertAt(inserDataRow, 0);//往newDt1对象中写入一行数据 dataDt.Merge(newDt1);//将newDt1表格中的数据合并到dataDt表格中。

上述程序代码执行完毕之后,我们可以看到dataDt中存在两条数据,一条为Name="张三"的,另一个为Name="李四"的,即成功将newDt1表格中的数据合并到dataDt表格中。

更多的DataTable的操作文章可以参考:

(1)C#的DataTable类Clone及Copy方法的区别

(2)C#通过Clone方法快速创建相同架构的DataTable

(3)C#通过InsertAt方法在DataTable特定位置插入一条数据

(4)C#通过Copy方法快速复制DataTable对象

(5)C#通过IndexOf方法获取某一列在DataTable中的索引位置

(6)C#通过Contains方法判断DataTable中是否存在某个列名

(7)C#手动往DataTable中末尾新增一行数据

(8)C#通过遍历DataTable的列获取所有列名

(9)C#通过Remove方法移除DataTable中的某一列数据

(10)C#如何往DataTable中新增一个数据列

(11)C#通过Rows.Count属性获取总行数

(12)C#中遍历DataTable中的数据行

(13)C#中手动创建一个DataTable并写入数据

备注:原文转载自博主个人站IT技术小趣屋,原文链接为C#的Merge方法合并两个DataTable对象的数据_IT技术小趣屋

博主个人技术交流群:960640092,博主微信公众号如下:

【转载】C#的Merge方法合并两个DataTable对象的数据的更多相关文章

  1. DataSet的Merge方法合并两张表

    原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] UniqueConstraint uc = new UniqueConstraint("pk" ...

  2. 如何在Node.js中合并两个复杂对象

    通常情况下,在Node.js中我们可以通过underscore的extend或者lodash的merge来合并两个对象,但是对于像下面这种复杂的对象,要如何来应对呢? 例如我有以下两个object: ...

  3. Js $.merge() 函数(合并两个数组内容到第一个数组)

    定义和用法 $.merge() 函数用于合并两个数组内容到第一个数组. 语法 $.merge( first, second )   参数 描述 first Array类型 第一个用于合并的数组,合并后 ...

  4. c# 合并两个DataTable

    当两个DataTable 结构相同可以用自带方法(Merge)合并 // // 摘要: // 将指定的 System.Data.DataTable 与当前的 DataTable 合并,指示是否在当前的 ...

  5. 使用JQuery 合并两个 json 对象

    一,保存object1和2合并后产生新对象,若2中有与1相同的key,默认2将会覆盖1的值 var object = $.extend({}, object1, object2); 二,将2的值合并到 ...

  6. 【JQuery】使用JQuery 合并两个 json 对象

    一,保存object1和2合并后产生新对象,若2中有与1相同的key,默认2将会覆盖1的值 1 var object = $.extend({}, object1, object2); 二,将2的值合 ...

  7. C# 两个datatable中的数据快速比较返回交集或差集[z]

    最基本的写法无非是写多层foreach循环,数据量多了,循环的次数是乘积增长的. 这里推荐使用Except()差集.Intersect()交集,具体性能没有进行对比. 如果两个datatable的字段 ...

  8. C# 两个datatable中的数据快速比较返回交集或差集

    转自: https://www.cnblogs.com/lacey/p/5893380.html 如果两个datatable的字段完全一致的话,可以直接使用Except,Intersect //Exc ...

  9. JSONObject遍历获取键值方法合并两个JSONObject

    JSONObject obj1= new JSONObject(); try { obj1.put("obj1_data", obj1_data); if (null != obj ...

随机推荐

  1. linux 指定用户 启动 程序

    sudo -H -u {username} /bin/bash -c "python test.py &" "&"  后台运行指令 本人亲测可用 ...

  2. vue文件夹上传组件选哪个好?

    一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...

  3. Pandas | 01 数据结构

    Pandas的三种数据结构: 系列(Series) 数据帧(DataFrame) 面板(Panel) 这些数据结构,构建在Numpy数组之上,这意味着它们很快 维数和描述 考虑这些数据结构的最好方法是 ...

  4. Java实现递归阶乘

    public class Factorial{ public static void main(String[] args){ for (int i = -5; i <= 5; i++) { S ...

  5. Datagrip 2017.2 激活

    解决方法 参考网址:https://jetbrains-server.ru/2017/03/31/datagrip-2016-2017-activation/page/2/ 亲测使用http://id ...

  6. HBase快照迁移数据失败原因及解决办法

    目录 目录 1 1. 背景 1 2. 环境 1 3. 执行语句 1 4. 问题描述 1 5. 错误信息 2 6. 问题原因 3 7. 解决办法 4 1. 背景 机房裁撤,需将源HBase集群的数据迁移 ...

  7. selenium--设置浏览器的位置和高度宽度

    前戏 web自动化的时候,如果你只有一个显示器,这时如果启动了谷歌浏览器,占据了整个显示器,那你肯定是没办法干其他的事情了.当然,你也可以使用phantomjs无头浏览器,那浏览器的兼容性你又不能不测 ...

  8. LOJ6625 时间复杂度(min_25筛)

    本人在LOJ的第三题(前两题太水不好意思说了QwQ),欢迎大家踩std. 题目链接:LOJ 题目大意:定义函数 $f$:($minp$ 表示最小质因子) $$f(x)=\begin{cases}0&a ...

  9. getpeername、getsockname

    函数原型: #include<sys/socket.h> int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t ...

  10. 基于Linux(中标麒麟)上QT的环境搭建

    最近由于公司需要,需要在中标麒麟上进行QT的二次开发,但是网上的资料很少,就算是有也基本都是其他的版本的Linux上的搭建.中标麒麟本身的资料也很好,而且还只能试用60天. 下面就介绍下我对此环境的搭 ...