zoukankan      html  css  js  c++  java
  • 合并两个DataTable

    方法1:

    SqlConnection myConnection=new SqlConnection("server=localhost;uid=sa;pwd=;database=wjoa");
                
    string sql1="select * from ResourseManage_T";
                SqlDataAdapter adapterA
    =new SqlDataAdapter(sql1,myConnection);
                DataSet ds
    =new DataSet();
                adapterA.Fill(ds,
    "a");
                
    string sql2="select * from UserLogin_t";
                    
                
    if(myConnection.State != ConnectionState.Closed)
                myConnection.Close();
                adapterA
    =new SqlDataAdapter(sql2, myConnection);
                adapterA.Fill(ds,
    "b");
                DataTable dtParent
    =ds.Tables["a"];
                DataTable dtChild
    =ds.Tables["b"];
                DataRow dr;
                
    for(int i=0;i<dtChild.Rows.Count;i++)
                
    {     
                    dr
    =dtParent.NewRow();
                    
    for(int j=0;j<dtParent.Columns.Count;j++)
                    
    {
                        dr[j]
    =dtChild.Rows[i][j];
                    }

                    dtParent.Rows.Add(dr);
                }

                
    this.DataGrid1.DataSource=ds.Tables["a"].DefaultView;
                
    this.DataGrid1.DataBind();

     

    方法2:

     

    //两个结构一样的DT合并
    DataTable DataTable1 = new DataTable();
    DataTable DataTable2 = new DataTable();
    DataTable newDataTable = DataTable1.Clone();

    object[] obj = new object[newDataTable.Columns.Count];
    for (int i = 0; i < DataTable1.Rows.Count; i++)
    {
        DataTable1.Rows[i].ItemArray.CopyTo(obj,0);
        newDataTable.Rows.Add(obj);
    }

    for (int i = 0; i < DataTable2.Rows.Count; i++)
    {
        DataTable2.Rows[i].ItemArray.CopyTo(obj,0);
        newDataTable.Rows.Add(obj);
    }
    //两个结构不同的DT合并
    /// <summary>
      /// 将两个列不同的DataTable合并成一个新的DataTable
      /// </summary>
      /// <param name="dt1">表1</param>
      /// <param name="dt2">表2</param>
      /// <param name="DTName">合并后新的表名</param>
      /// <returns></returns>
      private DataTable UniteDataTable( DataTable dt1 ,DataTable dt2 ,string DTName)
      { 
       DataTable dt3 = dt1.Clone();
       for( int i = 0 ;i < dt2.Columns.Count ;i ++ )
       {
        dt3.Columns.Add( dt2.Columns[i].ColumnName ) ;
       }
       object[] obj = new object[dt3.Columns.Count];
       
       for (int i = 0; i < dt1.Rows.Count; i++)
       {
        dt1.Rows[i].ItemArray.CopyTo(obj,0);
        dt3.Rows.Add(obj);
       }
          
       if( dt1.Rows.Count >= dt2.Rows.Count )
       {
        for( int i = 0 ;i < dt2.Rows.Count ;i++ )
        {
         for( int j = 0 ;j < dt2.Columns.Count ;j ++ )
         {
          dt3.Rows[i][j+dt1.Columns.Count] = dt2.Rows[i][j].ToString() ;
         }
        }
       }
       else
       {
        DataRow dr3 ;
        for( int i = 0 ;i < dt2.Rows.Count - dt1.Rows.Count ;i ++ )
        {
         dr3 = dt3.NewRow() ;
         dt3.Rows.Add( dr3 ) ;
        }
        for( int i = 0 ;i < dt2.Rows.Count ;i++ )
        {
         for( int j = 0 ;j < dt2.Columns.Count ;j ++ )
         {
          dt3.Rows[i][j+dt1.Columns.Count] = dt2.Rows[i][j].ToString() ;
         }
        }
       }
       dt3.TableName = DTName ; //设置DT的名字
       return dt3 ;
      }


  • 相关阅读:
    设计模式概述
    Android之.9.png图片的制作与使用
    2015-4-3~2015-5-28 第四届全国大学生软件设计大赛《解密陌生人》项目总结
    排序算法之快速排序
    AsyncTask那些事(更新中...)
    经典Android面试题
    import第三方库的头文件找不到的错误
    点击某个按钮在tableView某个位置动态插入一行cell
    NSUserDefaults:熟悉与陌生(转)
    更改UIsearchbar 的背景和cancel按钮(转)
  • 原文地址:https://www.cnblogs.com/aflyfly/p/1495939.html
Copyright © 2011-2022 走看看