DataSet操作问题 各位高手: 我现在有一个DataSet1,里面有5个DataTable,我现在想新建一个DataSet2,将DataSet1的5个DataTable合并成DataSet2中的1个DataTable,请问各位高手,应该怎么做,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 试一下 DataSet ds1 = new DataSet(); DataSet ds2 = new DataSet(); private void button5_Click(object sender, EventArgs e) { ds2.Tables[0].Merge(ds1.Tables[0]); ds2.Tables[0].Merge(ds1.Tables[1]); ds2.Tables[0].Merge(ds1.Tables[2]); } private void DemonstrateMerge() { // Create a DataSet with one table, two columns, and three rows. DataSet dataSet = new DataSet("dataSet"); DataTable table = new DataTable("Items"); DataColumn idColumn = new DataColumn("id", Type.GetType("System.Int32")); idColumn.AutoIncrement=true; DataColumn itemColumn = new DataColumn("Item", Type.GetType("System.Int32")); // DataColumn array to set primary key. DataColumn[] keyColumn= new DataColumn[1]; DataRow row; // Create variable for temporary DataSet. DataSet changeDataSet; // Add columns to table, and table to DataSet. table.Columns.Add(idColumn); table.Columns.Add(itemColumn); dataSet.Tables.Add(table); // Set primary key column. keyColumn[0]= idColumn; table.PrimaryKey=keyColumn; // Add ten rows. for(int i = 0; i <10;i++) { row=table.NewRow(); row["Item"]= i; table.Rows.Add(row); } // Accept changes. dataSet.AcceptChanges(); PrintValues(dataSet, "Original values"); // Change two row values. table.Rows[0]["Item"]= 50; table.Rows[1]["Item"]= 111; // Add one row. row=table.NewRow(); row["Item"]=74; table.Rows.Add(row); // Insert code for error checking. Set one row in error. table.Rows[1].RowError= "over 100"; PrintValues(dataSet, "Modified and New Values"); // If the table has changes or errors, create a subset DataSet. if(dataSet.HasChanges(DataRowState.Modified | DataRowState.Added)& dataSet.HasErrors) { // Use GetChanges to extract subset. changeDataSet = dataSet.GetChanges( DataRowState.Modified|DataRowState.Added); PrintValues(changeDataSet, "Subset values"); // Insert code to reconcile errors. In this case reject changes. foreach(DataTable changeTable in changeDataSet.Tables) { if (changeTable.HasErrors) { foreach(DataRow changeRow in changeTable.Rows) { //Console.WriteLine(changeRow["Item"]); if((int)changeRow["Item", DataRowVersion.Current ]> 100) { changeRow.RejectChanges(); changeRow.ClearErrors(); } } } } PrintValues(changeDataSet, "Reconciled subset values"); // Merge changes back to first DataSet. dataSet.Merge(changeDataSet); PrintValues(dataSet, "Merged Values"); }}private void PrintValues(DataSet dataSet, string label){ Console.WriteLine("\n" + label); foreach(DataTable table in dataSet.Tables) { Console.WriteLine("TableName: " + table.TableName); foreach(DataRow row in table.Rows) { foreach(DataColumn column in table.Columns) { Console.Write("\table " + row[column] ); } Console.WriteLine(); } }} 试试楼上的.DataSet2.Merge(DataSet1);应该会自动转架构的. Merge就好。。3楼贴的是不是反编译的原码? 【请教】之前写了一个C/S的通讯工具,现在想写个B/S,结合起来 数组问题 有没有深入讲.net原理的书 困扰了我一天的问题,请大家看看怎么解决 在QQ程序里的上线通知怎么实现的? 想破脑袋了:( 数据库记录新增或是修改的方案! 如何让此提示框跳出?求解 关于 DataGrid 更新数据库问题的最新情况(到目前为止3天了都没有解决办法) 请问如何将SqlDataReader类型转变为SqlDataAdapter类型? c#类相互调用的问题 {0:#.###} 这个是什么意思? tabControl控件里切换page是否有相应的事件
DataSet ds1 = new DataSet();
DataSet ds2 = new DataSet();
private void button5_Click(object sender, EventArgs e)
{
ds2.Tables[0].Merge(ds1.Tables[0]);
ds2.Tables[0].Merge(ds1.Tables[1]);
ds2.Tables[0].Merge(ds1.Tables[2]);
}
private void DemonstrateMerge()
{
// Create a DataSet with one table, two columns, and three rows.
DataSet dataSet = new DataSet("dataSet");
DataTable table = new DataTable("Items");
DataColumn idColumn = new DataColumn("id",
Type.GetType("System.Int32"));
idColumn.AutoIncrement=true;
DataColumn itemColumn = new DataColumn("Item",
Type.GetType("System.Int32")); // DataColumn array to set primary key.
DataColumn[] keyColumn= new DataColumn[1];
DataRow row; // Create variable for temporary DataSet.
DataSet changeDataSet; // Add columns to table, and table to DataSet.
table.Columns.Add(idColumn);
table.Columns.Add(itemColumn);
dataSet.Tables.Add(table); // Set primary key column.
keyColumn[0]= idColumn;
table.PrimaryKey=keyColumn; // Add ten rows.
for(int i = 0; i <10;i++)
{
row=table.NewRow();
row["Item"]= i;
table.Rows.Add(row);
} // Accept changes.
dataSet.AcceptChanges();
PrintValues(dataSet, "Original values"); // Change two row values.
table.Rows[0]["Item"]= 50;
table.Rows[1]["Item"]= 111; // Add one row.
row=table.NewRow();
row["Item"]=74;
table.Rows.Add(row); // Insert code for error checking. Set one row in error.
table.Rows[1].RowError= "over 100";
PrintValues(dataSet, "Modified and New Values");
// If the table has changes or errors, create a subset DataSet.
if(dataSet.HasChanges(DataRowState.Modified |
DataRowState.Added)& dataSet.HasErrors)
{
// Use GetChanges to extract subset.
changeDataSet = dataSet.GetChanges(
DataRowState.Modified|DataRowState.Added);
PrintValues(changeDataSet, "Subset values");
// Insert code to reconcile errors. In this case reject changes.
foreach(DataTable changeTable in changeDataSet.Tables)
{
if (changeTable.HasErrors)
{
foreach(DataRow changeRow in changeTable.Rows)
{
//Console.WriteLine(changeRow["Item"]);
if((int)changeRow["Item",
DataRowVersion.Current ]> 100)
{
changeRow.RejectChanges();
changeRow.ClearErrors();
}
}
}
}
PrintValues(changeDataSet, "Reconciled subset values");
// Merge changes back to first DataSet.
dataSet.Merge(changeDataSet);
PrintValues(dataSet, "Merged Values");
}
}private void PrintValues(DataSet dataSet, string label)
{
Console.WriteLine("\n" + label);
foreach(DataTable table in dataSet.Tables)
{
Console.WriteLine("TableName: " + table.TableName);
foreach(DataRow row in table.Rows)
{
foreach(DataColumn column in table.Columns)
{
Console.Write("\table " + row[column] );
}
Console.WriteLine();
}
}
}
应该会自动转架构的.