合并两个结构完全相同的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 ...
随机推荐
- java项目的划分方式:模块优先还是层优先?
I've seen and had lots of discussion about "package by layer" vs "package by feature& ...
- Bzoj1497 [NOI2006]最大获利
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 4449 Solved: 2181 Description 新的技术正冲击着手机通讯市场,对于各大运营商来 ...
- Apache Mod/Filter Development
catalog . 引言 . windows下开发apache模块 . mod进阶: 接收客户端数据的 echo 模块 . mod进阶: 可配置的 echo 模块 . mod进阶: 过滤器 0. 引言 ...
- protected的使用注意
在c#的可访问性级别中,public和private算是最容易理解的,相反protected往往令人非常头疼.经常在网上查资料的朋友往往会发现,答案几乎都是前篇一律,不是从msdn上拷贝的就是从别人的 ...
- 重启电脑后,oracle数据库连接不上
oracle10g安装成功后使用正常,重启电脑后,连接不上了,电脑-服务中各个服务都手动重启了,仍然无效 报错信息:ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 要手工去操作命 ...
- ruby 淘宝镜像
由于国内GFW原因,导致无法安装gem库文件.故选择淘宝镜像, 如何使用? $ gem sources --remove https://rubygems.org/ $ gem sources -a ...
- CF721C. Journey
传送门 说实话,这是一道非常简单的DP题,简单到如果放到NOIp第二题可能都有些差强人意,然而我写崩了. 所以简单记录一下. 需要注意的是,这道题的DP应该是从$N$点开始,以1为边界,满足最短路的三 ...
- UVA1213Sum of Different Primes(素数打表 + DP)
题目链接 题意:选择k个素数,使得和为N(1120)的方案数: 筛选出 <= N 的素数,然后就背包 写的时候没初始dp[0][0] = 1;而且方案数也没相加,真是弱逼 #include &l ...
- Apache和Nginx配置支持苹果ATS方法
什么是ATS功能? ATS是iOS9和OS X El Capitan的一个新特性.开启该功能后,ATS对使用NSURLConnection, CFURL或NSURLSession 等APIs 进行的网 ...
- asp.net js 倒计时总秒数量 和 排序
Edit in JSFiddle JavaScript HTML CSS Result h1 { font-family: "微软雅黑"; font-size: 40px; mar ...