请教:
    先定义了一个DataSet,在其中定义了一个表结构。我现在要做的是从另外一个表里边把数据填充到DataSet的表里边,两个表结构完全相同,请教一下这个应该如何操作。

解决方案 »

  1.   

    DataTable dtSource = dsSource.Tables[0].Copy();
    dsObject.Tables.Add(dtSource);
      

  2.   

    我是想要把数据填充到dataset已存在的表结构里边。不是添加一个新表。
      

  3.   

    dataset.Merge()是合并datatable,具体怎么做自己还没试过private   void   DemonstrateMergeTableAddSchema(){   
            //   Create   a   DataSet   with   one   table,   two   columns,   and   ten   rows.   
            DataSet   ds   =   new   DataSet("myDataSet");   
            DataTable   t   =   new   DataTable("Items");   
        
            //   Add   table   to   the   DataSet   
            ds.Tables.Add(t);   
        
            //   Create   and   add   two   columns   to   the   DataTable   
            DataColumn   c1   =   new   DataColumn("id",   Type.GetType("System.Int32"),"");   
            c1.AutoIncrement=true;   
            DataColumn   c2   =   new   DataColumn("Item",   Type.GetType("System.Int32"),"");   
            t.Columns.Add(c1);   
            t.Columns.Add(c2);   
        
            //   Set   the   primary   key   to   the   first   column.   
            t.PrimaryKey   =   new   DataColumn[1]{   c1   };   
        
            //   Add   RowChanged   event   handler   for   the   table.   
            t.RowChanged+=   new   DataRowChangeEventHandler(Row_Changed);   
        
            //   Add   ten   rows.   
            for(int   i   =   0;   i   <10;i++){   
                  DataRow   r=t.NewRow();   
                  r["Item"]=   i;   
                  t.Rows.Add(r);   
            }   
        
            //   Accept   changes.   
            ds.AcceptChanges();   
            PrintValues(ds,   "Original   values");   
        
            //   Create   a   second   DataTable   identical   to   the   first,   with   
            //   one   extra   column   using   the   Clone   method.   
            DataTable   t2   =   t.Clone();   
            t2.Columns.Add("extra",   typeof(string));   
        
            //   Add   two   rows.   Note   that   the   id   column   can't   be   the     
            //   same   as   existing   rows   in   the   DataSet   table.   
            DataRow   newRow;   
            newRow=t2.NewRow();   
            newRow["id"]=   12;   
            newRow["Item"]=555;   
            newRow["extra"]=   "extra   Column   1";   
            t2.Rows.Add(newRow);   
        
            newRow=t2.NewRow();   
            newRow["id"]=   13;   
            newRow["Item"]=665;   
            newRow["extra"]=   "extra   Column   2";   
            t2.Rows.Add(newRow);   
        
            //   Merge   the   table   into   the   DataSet.   
            Console.WriteLine("Merging");   
            ds.Merge(t2,false,MissingSchemaAction.Add);   
            PrintValues(ds,   "Merged   With   Table,   Schema   Added");   
      }   
        
      private   void   Row_Changed(object   sender,   DataRowChangeEventArgs   e){   
            Console.WriteLine("Row   Changed   "   +   e.Action.ToString()   +   "\t"   +   e.Row.ItemArray[0]);   
      }   
        
      private   void   PrintValues(DataSet   ds,   string   label){   
            Console.WriteLine("\n"   +   label);   
            foreach(DataTable   t   in   ds.Tables){   
                  Console.WriteLine("TableName:   "   +   t.TableName);   
                  foreach(DataRow   r   in   t.Rows){   
                        foreach(DataColumn   c   in   t.Columns){   
                              Console.Write("\t   "   +   r[c]   );   
                        }   
                        Console.WriteLine();   
                  }   
            }   
      }
      

  4.   

    ds1.Tables[0].Rows.Add(ds.Tables[0].Rows[0].ItemArray);
    逐条添加
      

  5.   

                foreach(row in ds2.Tables[0].rows)
    {
                ds1.Tables[0].ImportRow(row);
    }            
                
      

  6.   

    问题已解决,用DataSet自带的merge方法可以实现把表里的数据填充到DataSet中已存在的表里边,不需要另外在dataset中新增加表结构。