我有两个数据表。两个数据表添加
1表----->DataTable _dtMain = new COrder().GetDetails();
第二表----->DataTable _dtSub = new CGrid().GetSubDetails();
我想补充以上两个表。我正在使用_dtMain.Merge(_dtSub);
但它会将_dtSub
表追加到_dtMain
表中。我希望datatable添加第二个表到第一个列明智的表格(这意味着第一个表最后一列后)
我有两个数据表。两个数据表添加
1表----->DataTable _dtMain = new COrder().GetDetails();
第二表----->DataTable _dtSub = new CGrid().GetSubDetails();
我想补充以上两个表。我正在使用_dtMain.Merge(_dtSub);
但它会将_dtSub
表追加到_dtMain
表中。我希望datatable添加第二个表到第一个列明智的表格(这意味着第一个表最后一列后)
经过大量的研究,我找到了我之前发布的问题的答案。以下是用于梳理其中的数据的2个数据表&的代码。
public DataTable CombineTable(DataTable _dtGridDetails, DataTable _dtSubGridDetails)
{
//first create the datatable columns
DataSet mydataSet = new DataSet();
mydataSet.Tables.Add(" ");
DataTable myDataTable = mydataSet.Tables[0];
//add left table columns
DataColumn[] dcLeftTableColumns = new DataColumn[_dtGridDetails.Columns.Count];
_dtGridDetails.Columns.CopyTo(dcLeftTableColumns, 0);
foreach (DataColumn LeftTableColumn in dcLeftTableColumns)
{
if (!myDataTable.Columns.Contains(LeftTableColumn.ToString()))
myDataTable.Columns.Add(LeftTableColumn.ToString());
}
//now add right table columns
DataColumn[] dcRightTableColumns = new DataColumn[_dtSubGridDetails.Columns.Count];
_dtSubGridDetails.Columns.CopyTo(dcRightTableColumns, 0);
foreach (DataColumn RightTableColumn in dcRightTableColumns)
{
if (!myDataTable.Columns.Contains(RightTableColumn.ToString()))
{
// if (RightTableColumn.ToString() != RightPrimaryColumn)
myDataTable.Columns.Add(RightTableColumn.ToString());
}
}
//add left-table data to mytable
foreach (DataRow LeftTableDataRows in _dtGridDetails.Rows)
{
myDataTable.ImportRow(LeftTableDataRows);
}
for (int nIndex = 0; nIndex <= myDataTable.Rows.Count-1; nIndex++)
{
if (nIndex == _dtSubGridDetails.Rows.Count)
break;
myDataTable.Rows[nIndex][columnindex] = _dtSubGridDetails.Rows[nIndex][columnindex];
}
return myDataTable;
}
不要认为有任何内置的方法,你想实现的东西。
我想你需要使自己实施的东西,例如像一个扩展方法
public static DataTable Aggregate(this DataTable dt1, DataTable dt2)
{
var aggregator = new DataTable();
//add columns from dt1 and dt2
//add rows from dt1 dt2
}
或者,你可以在这两个表做一个完整的Outer Join
,像descrived在this文章。
接受任何评论 – Prinsu 2012-07-17 13:59:33