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