两个结构一模一样的DataTable如何合并?

例子:使用Winform进行演示,表2的数据为固定的,表1的数据可以动态添加,通过合并按钮合并表1和表2的数据到表3

1.规定公共的DataTable结构

        /// <summary>
/// 构造空的DataTable
/// </summary>
/// <returns></returns>
private DataTable GetEmptyDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add("Id");
dt.Columns.Add("Name");
return dt;
}

2.窗体加载事件中构造表2的数据

  private void Form1_Load(object sender, EventArgs e)
{
//构造表2的数据
DataTable dt2 = this.GetEmptyDataTable();
DataRow dr = dt2.NewRow();
dr["Id"] = Guid.NewGuid();
dr["Name"] = "表二的数据";
dt2.Rows.Add(dr);
this.dgv2.DataSource = dt2;
}

3.动态添加表1的数据

        /// <summary>
/// 新增表1数据
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnAddTable1_Click(object sender, EventArgs e)
{
this.dgv3.DataSource = null;
DataTable dtDataSouce = this.dgv1.DataSource as DataTable;
if (dtDataSouce == null)
{
dtDataSouce = this.GetEmptyDataTable();
}
DataRow dr = dtDataSouce.NewRow();
dr["Id"] = Guid.NewGuid();
dr["Name"] = "第" + dtDataSouce.Rows.Count.ToString() + "条数据";
dtDataSouce.Rows.Add(dr);
this.dgv1.DataSource = dtDataSouce;
}

4.开始合并

        /// <summary>
/// 合并两2个DataTable
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnStartMerge_Click(object sender, EventArgs e)
{
//得到表1的数据
DataTable dt1 = this.dgv1.DataSource as DataTable;
//得到表二的数据
DataTable dt2 = this.dgv2.DataSource as DataTable;
//开始合并(思路:构造空的表dt结构和表1、表2相同 将表1表2的数据添加到dt中) //1. 任意选择一个表进行复制
DataTable dt = dt1.Clone();
//2.循坏遍历表1
foreach (DataRow dr in dt1.Rows)
{
dt.Rows.Add(dr.ItemArray);
}
//3.循环遍历表2
foreach (DataRow dr in dt2.Rows)
{
dt.Rows.Add(dr.ItemArray);
}
//此时dt就是表1和表2的合并数据
this.dgv3.DataSource = dt;
}

5.演示

源代码下载

合并两个结构完全相同的DataTable的更多相关文章

  1. c# 合并两个DataTable

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

  2. 【转载】C#的Merge方法合并两个DataTable对象的数据

    在C#中的Datatable类中,可以使用DataTable类的Merge方法对两个相同结构的DataTable对象进行求并集运算,将两个DataTable对象的数据行合并到其中一个DataTable ...

  3. 剑指Offer15 合并两个已排序链表

    /************************************************************************* > File Name: 15_MergeT ...

  4. 如何用 Git 合并两个库,并保留提交历史

    转载自 https://segmentfault.com/a/1190000000678808 背景 一个中型规模项目,开始规划时就打算采用 C/S 架构,后端是单纯的 API 服务,前端在 Web ...

  5. Android合并两个APP的详细做法(掌握)

    有时候因公司需求,要求合并两个APP 使用里面的功能. 平台:Studio 小白鼠:二维码扫描 和自己项目 详细步骤: /**  * 1.将解压后的android/assets目录复制到项目中的mai ...

  6. [剑指offer] 14. 链表中倒数第K个节点+翻转+逆序打印+合并两个排序链表 + 链表相交(第一个公共节点) (链表)

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路:  两个指针,起始位置都是从链表头开始,第一个比第二个先走K个节点,当第一个走到链表尾时,第二个指针的位置就是倒数第k个节点.(两指针始终相 ...

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

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

  8. 剑指Offer面试题:16.合并两个排序的链表

    PS:这也是一道出镜率极高的面试题,我相信很多童鞋都会很眼熟,就像于千万人之中遇见不期而遇的人,没有别的话可说,唯有轻轻地问一声:“哦,原来你也在这里? ” 一.题目:合并两个排序的链表 题目:输入两 ...

  9. 【java基础】 合并两个类型相同的list

    将两个类型相同的list合并,可以用 addAll(Collection<? extends E> c) import java.util.ArrayList; import java.u ...

随机推荐

  1. 使用navicat连接mysql要报10038的错误

    1.mysql的设置 (1)授权mysql>grant all privileges on *.*  to  'root'@'%'  identified by 'youpassword'  w ...

  2. Java反序列化测试

    前言:有没有想过,如何将对象进行“加密”后写入磁盘?序列化帮你实现! 1.概念 序列化 (Serialization)将对象的状态信息转换为可以存储或传输的形式的过程.在序列化期间,对象将其当前状态写 ...

  3. Nginx 日志分享

    Nginx 日志对于大部分人来说是个未被发掘的宝藏,总结之前做某日志分析系统的经验,和大家分享一下 Nginx 日志的纯手工分析方式. Nginx 日志相关配置有 2 个地方:access_log 和 ...

  4. 数据结构(DataStructure)与算法(Algorithm)、STL应用

    catalogue . 引论 . 数据结构的概念 . 逻辑结构实例 2.1 堆栈 2.2 队列 2.3 树形结构 二叉树 . 物理结构实例 3.1 链表 单向线性链表 单向循环链表 双向线性链表 双向 ...

  5. Linux File System Change Monitoring Technology、Notifier Technology

    catalog . 为什么要监控文件系统 : hotplug . udev . fanotify(fscking all notification system) . inotify . code e ...

  6. PCRE Perl Compatible Regular Expressions Learning

    catalog . PCRE Introduction . pcre2api . pcre2jit . PCRE Programing 1. PCRE Introduction The PCRE li ...

  7. 重新认识unicode和utf8编码

    重新认识unicode和utf8编码 直到今天,准确的说是刚才,我才知道UTF-8编码和Unicode编码是不一样的,是有区别的囧 他们之间是有一定的联系的,看看他们的区别: UTF-8的长度是不一定 ...

  8. 看看你的正则行不行——正则优化一般的json字符串

    json字符串很有用,有时候一些后台接口返回的信息是字符串格式的,可读性很差,这个时候要是有个可以格式化并高亮显示json串的方法那就好多了,下面看看一个正则表达式完成的json字符串的格式化与高亮显 ...

  9. Python基本数据类型之dict

    一.创建字典: d = { "name": "morra", #字典是无序的 "age": 99, "gender": ...

  10. Yocto开发笔记之《串口驱动调试》(QQ交流群:519230208)

    QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 ======================================================== 串口驱动各 ...