日期:2014-05-18  浏览次数:20462 次

ado.net 如何把dataset里面的两个表合并起来
因为我的sql的水平实在太次了,一个sql语句总是搞不定所以我把这个sql分成两部分分开找,这样得到两个表,然后想把这个表合并,但是我只会一个一个记录的循环合并,请问有什么好的办法吗?谢谢。
不要问是什么sql了,我也说不明白,本来想问这个sql怎么写的,但是我描述了半天也没有描述清楚,所以改问这个问题,谢谢。

------解决方案--------------------
/创建一个DataSet
DataSet custDS = new DataSet( "CustomerOrders ");

//创建一个DataTable "Orders "
DataTable ordersTable = custDS.Tables.Add( "Orders ");
//创建另一个DataTable "Users "
custDS.Tables.Add( "Users ");

//向 "Orders " DataTable添加三个DataColumn
DataColumn pkCol = ordersTable[ "Orders "].Columns.Add( "OrderID ", typeof(Int32));
ordersTable[ "Orders "].Columns.Add( "OrderQuantity ", typeof(Int32));
ordersTable[ "Orders "].Columns.Add( "CompanyName ", typeof(string));

//设置列名为 "OrderID "的列为主键列
ordersTable[ "Orders "].PrimaryKey = new DataColumn[] {pkCol};

//创建 "Orders " DataTable的四个DataRow
for(int i = 0; i <= 4; i ++)
{
myDataRow = ordersTable[ "Orders "].NewRow();
myDataRow[ "OrderID "] = i;
myDataRow[ "OrderQuantity "] = i;
myDataRow[ "CompanyName "] = "Company " + i ;
ordersTable[ "Orders "].Rows.Add(myDataRow);
}

//创建两个DataTable的约束关系
DataColumn parentColumn = myDataSet.Tables[ "Orders "].Columns[ "OrderID "];
DataColumn childColumn = myDataSet.Tables[ "Users "].Columns[ "UserID "]; //假设Users这个DataTable有一 "UserID " DataColumn
ordersTable[ "Users "].ParentRelations.Add(new DataRelation( "RelationName ", parentColumn, childColumn));

//将创建的DataSet与已创建控件dataGrid1数据绑定( "Orders " DataTable作为第一个表)
dataGrid1.SetDataBinding(custDS, "Orders ");

------解决方案--------------------
Merge属性

DataSet ds = new DataSet();
ds.Merge(olderDs.Tables[0]);
DataTable dt = olderDs.Tables[1].Copy();
dt.TableName = ds.Tables[0].TableName;
ds.Merge(dt);