我有兩個數據表。兩個數據表添加
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