2012-02-10 49 views
0

我有兩個數據表。兩個數據表添加

1表----->DataTable _dtMain = new COrder().GetDetails();
第二表----->DataTable _dtSub = new CGrid().GetSubDetails();

我想補充以上兩個表。我正在使用_dtMain.Merge(_dtSub); 但它會將_dtSub表追加到_dtMain表中。我希望datatable添加第二個表到第一個列明智的表格(這意味着第一個表最後一列後)

回答

0

經過大量的研究,我找到了我之前發佈的問題的答案。以下是用於梳理其中的數據的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; 
    } 
+1

接受任何評論 – Prinsu 2012-07-17 13:59:33

0

不要認爲有任何內置的方法,你想實現的東西。

我想你需要使自己實施的東西,例如像一個擴展方法

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文章。