2012-02-10 2 views
0

두 개의 데이터 테이블이 있습니다.두 개의 데이터 테이블 추가

1 표 ----->DataTable _dtMain = new COrder().GetDetails();
2 표 ----->DataTable _dtSub = new CGrid().GetSubDetails(); 나는 위의 두 테이블을 추가 할

. 나는 사용하고있다 _dtMain.Merge(_dtSub); 그러나 그것은 _dtMain 표에 _dtSub 표를 붙일 것이다. 내가 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

0

달성하고자하는 것에 대한 기본 제공 방법을 생각하지 마십시오.

나는 this 문서에 기재된, 당신처럼, 당신은 두 테이블에 완전한 Outer Join을 할 수있는, 확장 방법을 예를 들어 같은, 그 물건에 대한

public static DataTable Aggregate(this DataTable dt1, DataTable dt2) 
{ 
    var aggregator = new DataTable(); 
    //add columns from dt1 and dt2 

    //add rows from dt1 dt2 
} 

을 자신의 구현을 만들 필요가 또는 생각합니다.