2012-02-10 93 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文章。