1. 程式人生 > >C#中Merge方法實現把不同表結構的表合併成一張表,同時合併資料

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];