2个DataSet 就是在第一个DataSet列后面 加上第二个DataSet中的列foreach (DataColumn column in db.Tables[0].Columns)
{
  ds.Tables[0].Columns.Add(column);
}他老是暴 列已经存在 去求高手 解答下 

解决方案 »

  1.   

    foreach 前把 ds new一下肯定是第二次运行出的问题或者 ds.tables[0].columns.clear();
      

  2.   

    不能这样加,因为这个column已经是其它datatable的一个column了。
    这样写:
    foreach (DataColumn column in db.Tables[0].Columns)
    {
      DataColumn newColumn = new DataColumn(column.ColumnName, column.DataType);
      ds.Tables[0].Columns.Add(newColumn);
    }
      

  3.   

    明白意思没有??同一个DataColumn的实例,不能同时属于两个DataTable。就好像一人不能同时是两个人的亲生儿子一样(如果要的话,只能去重新new一个一模一样的)。
      

  4.   

    因为你遍历出来的column依然是属于db.Tables[0]的,当然会加不上
    你可以写成
    ds.Tables[0].Columns.Add(column.ColumnName);
      

  5.   


    foreach (DataColumn column in db.Tables[0].Columns)
    {
      DataColumn c = new DataColumn ();
      c.ColumnName = column.ColumnName ;
      c.DataType = column.DataType 
      ds.Tables[0].Columns.Add(c);
    }
      

  6.   


    你的问题就是,Column的名称没有指定,第二次添加的时候名称相同,肯定报错“列已经存在”
    所以要指定列名
      

  7.   

    把row也遍历一下呗
    foreach (DataRow row in db.Tables[0].Rows)
    {
      DataRow r = datatable.NewRow();//datatable是你第二个dataset中的表列已经添加完毕
       for (int i = 0; i < row.ItemArray.Length; i++)
                   {
                       r[i] = row[i];
                   }
    datatable.Rows.Add(r);
    }
      

  8.   

    其实如果你使用的。net版本高的话,可以直接使用它的copy方法,直接拷贝结构和数据
    DataSet dataset2 = new DataSet();
    DataTable  dt = dataset1.Tables[0].Copy();
    dataset2.Tables.Add(dt); 你可以试一试
      

  9.   

    http://msdn.microsoft.com/zh-cn/library/aszytsd8(VS.80).aspx
      

  10.   

    datatable 合并
    DataTable dt1=new DataTable();  
    dt1.Columns.Add("ID",typeof(int));  
    dt1.Columns.Add("Name",typeof(string));  
    dt1.PrimaryKey=new DataColumn[] { dt1.Columns[0] };  
     
    DataTable dt2=new DataTable();  
    dt2.Columns.Add("ID",typeof(int));  
    dt2.Columns.Add("MC",typeof(string));DataTable dt3= dt1.Copy();  
    dt3.Merge(dt2);  
    DataTable curDt = dt2.Copy(); //curDt存放合并后的值  
    if(!curDt.Columns.Cotains("B")) curDt.Columns.Add("B");  for(int r = 0; r < dt2.Rows.Count; r++)  
    {  
      DataRow dr = dt2.Rows[r];  
      string aValue = dr["A"].ToString().ToUpper();  
      foreach(DataRow tDr in dt1.Rows)  
      {  
      string tValue = tDr["A"].ToString().ToUpper();  
      if(tValue == aValue)  
      {  
      curDt.Rows[r]["B"] = tDr["B"];  
      break;  
      }  
      }  
    }  
      

  11.   

    这样怎么会没有数据呢
                DataSet dataset1 = new DataSet();            DataTable table = new DataTable();
                DataColumn col1 = new DataColumn("name",typeof(string));
                DataColumn col2 = new DataColumn("age", typeof(Int32));
                table.Columns.Add(col1);
                table.Columns.Add(col2);
                DataRow row1 = table.NewRow();
                row1[0] = "Jim";
                row1[1] = 20;
                table.Rows.Add(row1);            DataRow row2 = table.NewRow();
                row2[0] = "Peter";
                row2[1] = 21;
                table.Rows.Add(row2);            dataset1.Tables.Add(table);            DataSet dataset2 = new DataSet();
                DataTable newTable = dataset1.Tables[0].Copy();
                dataset2.Tables.Add(newTable);
    dataset2.Tables[0]是有数据的,我不知道你的是怎么弄的
    据说以前的.net版本中没有copy函数,如果你用的是旧版本的.net
    那就用这种呗            DataSet dataset1 = new DataSet();            DataTable table = new DataTable();
                DataColumn col1 = new DataColumn("name",typeof(string));
                DataColumn col2 = new DataColumn("age", typeof(Int32));
                table.Columns.Add(col1);
                table.Columns.Add(col2);
                DataRow row1 = table.NewRow();
                row1[0] = "Jim";
                row1[1] = 20;
                table.Rows.Add(row1);
                DataRow row2 = table.NewRow();
                row2[0] = "Peter";
                row2[1] = 21;
                table.Rows.Add(row2);            dataset1.Tables.Add(table);
                DataSet dataset2 = new DataSet();
                DataTable newTable = new DataTable();
                foreach (DataColumn column in dataset1.Tables[0].Columns)
                {
                    DataColumn c = new DataColumn();
                    c.ColumnName = column.ColumnName;
                    c.DataType = column.DataType;
                    newTable.Columns.Add(c);
                }
                foreach (DataRow row in dataset1.Tables[0].Rows)
                {
                    DataRow r = newTable.NewRow();
                    for (int i = 0; i < row.ItemArray.Length; i++)
                    {
                        r[i] = row[i];
                    }
                    newTable.Rows.Add(r);
                }
                dataset2.Tables.Add(newTable);我都测试过没问题的啊