博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

c# 对两个Datatable的结构相同进行合并

Posted on 2008-11-20 16:52  codingsilence  阅读(1569)  评论(0编辑  收藏  举报
 
 
  
        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.    forint 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.     forint i = 0 ;i < dt2.Rows.Count ;i++ )
  42.     {
  43.      forint 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.     forint i = 0 ;i < dt2.Rows.Count - dt1.Rows.Count ;i ++ )
  53.     {
  54.      dr3 = dt3.NewRow() ;
  55.      dt3.Rows.Add( dr3 ) ;
  56.     }
  57.     forint i = 0 ;i < dt2.Rows.Count ;i++ )
  58.     {
  59.      forint 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.         }