合并两个结构完全相同的DataTable
两个结构一模一样的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的更多相关文章
- c# 合并两个DataTable
当两个DataTable 结构相同可以用自带方法(Merge)合并 // // 摘要: // 将指定的 System.Data.DataTable 与当前的 DataTable 合并,指示是否在当前的 ...
- 【转载】C#的Merge方法合并两个DataTable对象的数据
在C#中的Datatable类中,可以使用DataTable类的Merge方法对两个相同结构的DataTable对象进行求并集运算,将两个DataTable对象的数据行合并到其中一个DataTable ...
- 剑指Offer15 合并两个已排序链表
/************************************************************************* > File Name: 15_MergeT ...
- 如何用 Git 合并两个库,并保留提交历史
转载自 https://segmentfault.com/a/1190000000678808 背景 一个中型规模项目,开始规划时就打算采用 C/S 架构,后端是单纯的 API 服务,前端在 Web ...
- Android合并两个APP的详细做法(掌握)
有时候因公司需求,要求合并两个APP 使用里面的功能. 平台:Studio 小白鼠:二维码扫描 和自己项目 详细步骤: /** * 1.将解压后的android/assets目录复制到项目中的mai ...
- [剑指offer] 14. 链表中倒数第K个节点+翻转+逆序打印+合并两个排序链表 + 链表相交(第一个公共节点) (链表)
题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路: 两个指针,起始位置都是从链表头开始,第一个比第二个先走K个节点,当第一个走到链表尾时,第二个指针的位置就是倒数第k个节点.(两指针始终相 ...
- 如何在Node.js中合并两个复杂对象
通常情况下,在Node.js中我们可以通过underscore的extend或者lodash的merge来合并两个对象,但是对于像下面这种复杂的对象,要如何来应对呢? 例如我有以下两个object: ...
- 剑指Offer面试题:16.合并两个排序的链表
PS:这也是一道出镜率极高的面试题,我相信很多童鞋都会很眼熟,就像于千万人之中遇见不期而遇的人,没有别的话可说,唯有轻轻地问一声:“哦,原来你也在这里? ” 一.题目:合并两个排序的链表 题目:输入两 ...
- 【java基础】 合并两个类型相同的list
将两个类型相同的list合并,可以用 addAll(Collection<? extends E> c) import java.util.ArrayList; import java.u ...
随机推荐
- 74.Android之四种启动模式
转载:http://www.cnblogs.com/meizixiong/archive/2013/07/03/3170591.html 一.启动模式介绍 启动模式简单地说就是Activity启动时的 ...
- Leetcode Integer Replacement
Given a positive integer n and you can do operations as follow: If n is even, replace n with n/2. If ...
- javaScript与MVC
MVC,就是Module,View,Controller分离,使业务逻辑更加清晰,但是现在公司的项目中很多地方那个不是这样的,很多业务逻辑放在了javascript中实现,这样做的优点就是对于技术要求 ...
- C# winform窗体设计-查询单个值
查询单个值主要用于对成绩最低分,最高分,学生总数,学生性别等信息的统计 在查询单个值的时候用到了ExecuteScalar方法,连接以及语句方面,以及思路和对数据的增删改差不多 下面请看一段代码: s ...
- DayuCMS 1.525 /include/global.func.php Foreground Arbitrary Code Execution
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Relevant Link: http://joychou.org/in ...
- NetLink Communication Mechanism And Netlink Sourcecode Analysis
catalog . Netlink简介 . Netlink Function API Howto . Generic Netlink HOWTO kernel API . RFC Linux Netl ...
- SQL查询——同一张表的横向与纵向同时比较
表名:student 表结构及数据: +----+--------+---------+------+------------+--------------+---------+ | id | nam ...
- IDEA新建MAVEN项目时速度缓慢
原因 IDEA根据maven archetype的本质,其实是执行mvn archetype:generate命令,该命令执行时,需要指定一个archetype-catalog.xml文件. 该命令的 ...
- HDU 1754 I Hate It(线段树模板题)
题目链接: 传送门 I Hate It Time Limit: 3000MS Memory Limit: 32768 K Description 很多学校流行一种比较的习惯.老师们很喜欢询问, ...
- ubuntu nginx 安装以及配置文件详解
1.到nginx官网下载源码包.最好下载稳定版本,nginx官网http://www.nginx.org/ 2.安装nginx依赖包运行命令: sudo apt-get install libssl- ...