前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >合并两个结构完全相同的DataTable

合并两个结构完全相同的DataTable

作者头像
用户1055830
发布2018-01-18 15:16:43
1.8K0
发布2018-01-18 15:16:43
举报
文章被收录于专栏:飞扬的花生飞扬的花生

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

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

1.规定公共的DataTable结构

代码语言:javascript
复制
        /// <summary>
        /// 构造空的DataTable
        /// </summary>
        /// <returns></returns>
        private DataTable GetEmptyDataTable()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Id");
            dt.Columns.Add("Name");
            return dt;
        }

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

代码语言:javascript
复制
  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的数据

代码语言:javascript
复制
        /// <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.开始合并

代码语言:javascript
复制
        /// <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.演示

源代码下载

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-10-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档