C#中Merge方法实现把不同表结构的表合并成一张表,同时合并数据

以前做评教系统时记得想把2张表结构不同的表合成一张表,当时没找到使用代码如何实现,最后采用了建立视图的方式方法实现.今天解决某个问题时突然看到了Merge方法可以不建立视图就解决我当时的问题,记录下来:

使用Merge方法把2张拥有不同机构的表合成一张表.

有这样2张表:

第1张结构ID,Name   数据(1, "Age ") ‍(2, "Apple ") ‍(3, "Orange ");

第2张表结构ID,Price   数据(1, 10) ‍(2, 6) (3, 7);

想要的表结构:ID,Name,Price   合并后数据(1,"Age",10) (2,"Apple",6) (3,"Orange",7)

怎么将表结构合并同时把数据也合并到表中呢?看下面的例子:

DataTable dt1 = new DataTable(); 
dt1.Columns.Add( "ID ", typeof(int)); 
dt1.Columns.Add( "Name ", typeof(string)); 
dt1.PrimaryKey = new DataColumn[] { dt1.Columns[0]}; 
dt1.Rows.Add(1, "Age "); 
dt1.Rows.Add(2, "Apple "); 
dt1.Rows.Add(3, "Orange "); 

DataTable dt2 = new DataTable(); 
dt2.Columns.Add( "ID ", typeof(int)); 
dt2.Columns.Add( "Price ", typeof(decimal)); 
dt2.PrimaryKey = new DataColumn[] { dt2.Columns[0] }; 
dt2.Rows.Add(1, 10); 
//dt2.Rows.Add(2, 6); 
dt2.Rows.Add(3, 7); 

DataTable dt3 = dt1.Copy(); 
dt3.Merge(dt2);//也可以:dt1.Merge(dt2);DataTable   dt3=dt1.Copy();

我的这种解决方式显然比这个问题的最佳答案更优雅和简洁:

http://zhidao.baidu.com/question/48304907.html



------------

  SqlDataAdapter sda new SqlDataAdapter("select from academy", con);

            DataSet ds new DataSet();

            sda.Fill(ds);

            sda new SqlDataAdapter("select from resultstate", con);

            DataSet ds1 new DataSet();

            sda.Fill(ds1);

            ds1.Merge(ds, true, MissingSchemaAction.AddWithKey);//j就是多这一句哈

            dataGridView1.DataSource ds1.Tables[0];


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值