本帖最后由 ghost_1437 于 2009-06-26 10:52:52 编辑

解决方案 »

  1.   


    private void CopyDataSet(DataSet dataSet)
    {
        // Create an object variable for the copy.
        DataSet copyDataSet;
        copyDataSet = dataSet.Copy();    // Insert code to work with the copy.
    }Copy方法返回具有与该 DataSet 相同的结构(表架构、关系和约束)和数据。
    或者
    ds2.Tables.Add(ds.Tables["B表"]);
      

  2.   

                        DataSet ds1 = new DataSet();
                                            DataSet ds2 = new DataSet();
                        ds2.Tables.Add(ds1.Tables["name"].Copy());不知道理解的对不对.
      

  3.   

    怎么把B表完整(包括数据,字段),把放到另一个新的DataSet2里面,和你在B表追加字段的操作,有关系么?直接copy就行吧
      

  4.   

    DataSet oDs1 = new DataSet();          
    DataSet oDs2 = new DataSet();for int i=oDs1.tables(0).Row.count-1
    oDs2.Tables(i).Add(oDs1.Tables(i).Copy()); 
    next
      

  5.   

    将两个表重新整合成一个DataTable   
      在第一个表的基础上增加一列DataTable1.Columns.Add(new   DataColumn("DicName",   typeof(string)));//生成测试数据   
      DataSet   ds1=new   DataSet   ();   
      DataSet   ds2=new   DataSet   ();   
      DataTable   dt1=new   DataTable   ("tb1");   
      DataTable   dt2=new   DataTable   ();   
        
      dt1.Columns.Add("DicNum",typeof(int));   
      dt1.Columns.Add("Content",typeof(string));   
      dt2.Columns.Add("DicNum",typeof(int));   
      dt2.Columns.Add("DicName",typeof(string));   
        
      DataRow   dr;   
      dr=dt1.NewRow   ();   
      dr[0]=1;   
      dr[1]="aaa";   
      dt1.Rows.Add(dr);   
      dr=dt1.NewRow   ();   
      dr[0]=2;   
      dr[1]="bbb";   
      dt1.Rows.Add(dr);   
      dr=dt1.NewRow   ();   
      dr[0]=2;   
      dr[1]="ccc";   
      dt1.Rows.Add(dr);   
        
      dr=dt2.NewRow   ();   
      dr[0]=1;   
      dr[1]="北京";   
      dt2.Rows.Add(dr);   
      dr=dt2.NewRow   ();   
      dr[0]=2;   
      dr[1]="上海";   
      dt2.Rows.Add(dr);   
        
        
      ds1.Tables.Add(dt1);   
      ds2.Tables.Add(dt2);   
        
      //测试   
      ds1.Tables   .Add   (ds2.Tables[0].Copy());   
        
      ds1.Relations   .Add   ("pc",ds1.Tables   [1].Columns   [0],ds1.Tables[0].Columns[0]);   
      DataTable   newTable=ds1.Tables[1].Clone();   
      newTable.Constraints.Clear();   
      newTable.Columns.Add   ("NickName",typeof(string));   
        
      foreach(DataRow   row   in   ds1.Tables   [1].Rows)   
      {   
      DataRow[]   rows=row.GetChildRows("pc");   
      foreach(DataRow   r   in   rows)   
      {   
      DataRow   newRow=newTable.NewRow();   
      newRow[0]=row[0];   
      newRow[1]=row[1];   
      newRow[2]=r[1];   
      newTable.Rows.Add   (newRow);   
      }   
      }   
        
        
                              //输出   
      foreach(DataRow   row   in   newTable.Rows)   
      {   
      Response.Write   (row.Table.Columns[0].ColumnName+":"+row[0].ToString()+"       "+row.Table.Columns[1].ColumnName+":"+row[1].ToString()+"       "+row.Table.Columns[2].ColumnName+":"+row[2].ToString()+"<br>");   
      }   
      
      

  6.   

    我不要相同的结构。我只想要Table结构和Table关联的数据
      

  7.   

    不知道楼主是否想实现类似于SQL中的LEFT JOIN 的功能?如果是的话,我有一方法。
      

  8.   

    应该不是。我的意思是很简单,就是把Ds1.B表 放到新的Ds2里面。DS1里有2(A,B表)个表,DS2只有1(B表)表。
      

  9.   

    这位朋友。方法会不会有效率问题呢?我的B表里面可能会有10W以上的记录的啵这样copy会不会有点慢呢?
      

  10.   

    1.
    DataSet dsNew = dataSet.Copy();
    2.
    dsNew.Tables.Add(ds.Tables["B表"]);
    3.
    遍历原有表记录并插入到一个具有相同结构的新表中(最笨的,哈哈)
      

  11.   

    DataTable dt = new DataTable();
    foreach (DataColumn Col in B表.Columns)
    {
                    DataColumn DataCol = new DataColumn();
                    DataCol.DataType = Col.DataType;
                    DataCol.ColumnName = Col.ColumnName;
                    DataCol.Caption = Col.Caption;
                    B表.Columns.Add(DataCol);
    }
    foreach (DataRow Row in B表.Rows)
    {
        DataRow NewRow = dt.NewRow();
        NewRow.ItemArray = Row.ItemArray;
        dt.Rows.Add(Row.ItemArray);
    }
    谢谢各位朋友。现在只能先用遍历记录,复制到新的表。结贴吧!