轉載CSDN(educast):c# 對兩個Datatable的結構相同進行合并

來源:互聯網
上載者:User

  Datatable db=null;
        DataTable dt = ds.Tables[0];
        ////兩個datatable進行合并
         db = dt.Copy();
        DataRow[] foundRows = dt.Select();
        for (int i = 0; i < foundRows.Length;i++)
        {
            db.ImportRow(foundRows[i]);
        }

  1. //兩個結構一樣的DT合并
  2. DataTable DataTable1 = new DataTable();
  3. DataTable DataTable2 = new DataTable();
  4. DataTable newDataTable = DataTable1.Clone();
  5. object[] obj = new object[newDataTable.Columns.Count];
  6. for (int i = 0; i < DataTable1.Rows.Count; i++)
  7. {
  8.     DataTable1.Rows[i].ItemArray.CopyTo(obj,0);
  9.     newDataTable.Rows.Add(obj);
  10. }
  11. for (int i = 0; i < DataTable2.Rows.Count; i++)
  12. {
  13.     DataTable2.Rows[i].ItemArray.CopyTo(obj,0);
  14.     newDataTable.Rows.Add(obj);
  15. }
  16. //兩個結構不同的DT合并
  17. /// <summary>
  18.   /// 將兩個列不同的DataTable合并成一個新的DataTable
  19.   /// </summary>
  20.   /// <param name="dt1">表1</param>
  21.   /// <param name="dt2">表2</param>
  22.   /// <param name="DTName">合并後新的表名</param>
  23.   /// <returns></returns>
  24.   private DataTable UniteDataTable( DataTable dt1 ,DataTable dt2 ,string DTName)
  25.   { 
  26.    DataTable dt3 = dt1.Clone();
  27.    for( int i = 0 ;i < dt2.Columns.Count ;i ++ )
  28.    {
  29.     dt3.Columns.Add( dt2.Columns[i].ColumnName ) ;
  30.    }
  31.    object[] obj = new object[dt3.Columns.Count];
  32.    
  33.    for (int i = 0; i < dt1.Rows.Count; i++)
  34.    {
  35.     dt1.Rows[i].ItemArray.CopyTo(obj,0);
  36.     dt3.Rows.Add(obj);
  37.    }
  38.       
  39.    if( dt1.Rows.Count >= dt2.Rows.Count )
  40.    {
  41.     for( int i = 0 ;i < dt2.Rows.Count ;i++ )
  42.     {
  43.      for( int j = 0 ;j < dt2.Columns.Count ;j ++ )
  44.      {
  45.       dt3.Rows[i][j+dt1.Columns.Count] = dt2.Rows[i][j].ToString() ;
  46.      }
  47.     }
  48.    }
  49.    else
  50.    {
  51.     DataRow dr3 ;
  52.     for( int i = 0 ;i < dt2.Rows.Count - dt1.Rows.Count ;i ++ )
  53.     {
  54.      dr3 = dt3.NewRow() ;
  55.      dt3.Rows.Add( dr3 ) ;
  56.     }
  57.     for( int i = 0 ;i < dt2.Rows.Count ;i++ )
  58.     {
  59.      for( int j = 0 ;j < dt2.Columns.Count ;j ++ )
  60.      {
  61.       dt3.Rows[i][j+dt1.Columns.Count] = dt2.Rows[i][j].ToString() ;
  62.      }
  63.     }
  64.    }
  65.    dt3.TableName = DTName ; //設定DT的名字
  66.    return dt3 ;
  67.   }
  68. //多個 結構相同的DataTable合并
  69.         public DataTable GetAllEntrysDataTable()
  70.         {
  71.             DataTable newDataTable = GetEntrysDataTable(0).Clone();
  72.             object[] obj = new object[newDataTable.Columns.Count];
  73.             for (int i = 0; i < entryGroups.GetEntryGroupCount(); i++)
  74.             {
  75.                 for (int j = 0; j < GetEntrysDataTable(i).Rows.Count; j++)
  76.                 {
  77.                     GetEntrysDataTable(i).Rows[j].ItemArray.CopyTo(obj, 0);
  78.                     newDataTable.Rows.Add(obj);
  79.                 }
  80.             }
  81.             return newDataTable;
  82.         } 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.