您的位置:首页 > 编程语言 > C#

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

2014-03-11 20:12 597 查看
以前做评教系统时记得想把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];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐