您的位置:首页 > 其它

DataTable.Merge()方法

2011-07-18 12:38 148 查看
DataTable.Merge()方法可以实现两张表的数据合并。table1.Merge(table2)表示将table2中的数据合并到table1中,如:构建dt1:DataTable dt1 = new DataTable(); dt1.Columns.Add("Name", typeof(string)); dt1.Columns.Add("ID",typeof(string)); DataRow row1 = dt1.NewRow(); row1["Name"] = "Francis"; row1["ID"] = "10001"; dt1.Rows.Add(row1);

构建dt2DataTable dt2 = new DataTable(); dt2.Columns.Add("One", typeof(string)); dt2.Columns.Add("Two", typeof(string)); dt2.Columns.Add("Three", typeof(string)); dt2.Columns.Add("Four", typeof(string)); DataRow row2 = dt2.NewRow(); row2[0] = "一"; row2[1] = "二"; row2[2] = "三"; row2[3] = "四"; dt2.Rows.Add(row2);

执行dt1.Merge(dt2)后得到结果。

执行后dt1会保存合并后的数据。如果此时再执行dt2.Merge(dt1)的话,会得到如下数据:

可见,与表相同的列会合并显示。所示,dt1的数据被移到了右边。若合并的表具有相同的主键,则合并后主键相同并且列相同的数据会被合并。考虑MSDN中的例子:private static void DemonstrateMergeTable() { // Demonstrate merging, within and without // preserving changes. // In this example, take these actions: // 1. Create a DataTable (table1) and fill the table with data. // 2. Create a copy of table1, and modify its data (modifiedTable). // 3. Modify data in table1. // 4. Make a copy of table1 (table1Copy). // 5. Merge the data from modifiedTable into table1 and table1Copy, // showing the difference between setting the preserveChanges // parameter to true and false. // Create a new DataTable. DataTable table1 = new DataTable("Items"); // Add two columns to the table: DataColumn column = new DataColumn("id", typeof(System.Int32)); column.AutoIncrement = true; table1.Columns.Add(column); column = new DataColumn("item", typeof(System.String)); table1.Columns.Add(column); // Set primary key column. table1.PrimaryKey = new DataColumn[] { table1.Columns[0] }; // Add some rows. DataRow row; for (int i = 0; i <= 3; i++) { row = table1.NewRow(); row["item"] = "Item " + i; table1.Rows.Add(row); } // Accept changes. table1.AcceptChanges(); PrintValues(table1, "Original values"); DataTable dt2 = table1.Copy(); PrintValues(dt2, "Copy form Table1"); dt2.Merge(table1,true); PrintValues(dt2, "dt2 merge table1"); // Using the same schema as the original table, // modify the data for later merge. DataTable modifiedTable = table1.Copy(); foreach (DataRow rowModified in modifiedTable.Rows) { rowModified["item"] = rowModified["item"].ToString() + " modified"; } modifiedTable.AcceptChanges(); // Change row values, and add a new row: table1.Rows[0]["item"] = "new Item 0"; table1.Rows[1]["item"] = "new Item 1"; row = table1.NewRow(); row["id"] = 4; row["item"] = "Item 4"; table1.Rows.Add(row); // table1.AcceptChanges(); // Get a copy of the modified data: DataTable table1Copy = table1.Copy(); PrintValues(table1, "Modified and new Values"); PrintValues(modifiedTable, "Data to be merged into table1"); // Merge new data into the modified data. table1.Merge(modifiedTable, true); PrintValues(table1, "Merged data (preserve changes)"); table1Copy.Merge(modifiedTable, false); PrintValues(table1Copy, "Merged data (don't preserve changes)"); }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: