我在开发一个统计程序,遇到这样一个问题:
我已在数据库中执行SELECT QuestionID,Answer1 FROM Answers;来得到一个DataSet。显然,这个DataSet属于System.Data.DataSet,具有一个表(Answers),这个表有两个列(QuestionID和Answer1)。我在自己的项目中添加了一个自己的 DataSet1 对象(项目名.DataSet1,不是System.Data.DataSet),并创造了一个实例。现在我希望把查询得到的Dataset中的数据全部复制到DataSet1的那个实例中去,但列名需要更改,即将Answer1改为Answer。请问该如何操作?
谢谢!

解决方案 »

  1.   

    如果两个同名,同类型:
      DataTable dt = ds.Tables[0].Clone();//复制一个原表的结构,与DataRow字段与类型相同
                       for (int i = 0; i < dr.Length; i++)
                       {
                           dt.ImportRow(dr[i]);
                           //不同名,可能先drNew=ds.NewRow()要每行每个字段的给drNew赋值了
                           //然后再ds.AddRow()
                       }
      

  2.   


          DataTable dt = DataSet0.Tables["Answers"];
          dt.Columns["Answer1"].ColumnName = "Answer";
          DataSet DataSet1 = new DataSet();
          DataSet1.Tables.Add(dt);      随便写一个 你试试看行不行 没有测试过
      

  3.   

    不改列名还简单,直接copy就行了
    改列名就得循环了
      

  4.   

    不需要循环啊 直接把DATATABLE弄出来 然后改掉列名 然后再拷进去啊
      

  5.   

    好像dataTable有数据的情况下,列名是改不了的
      

  6.   

    可以改啊
     DataTable Answers = new DataTable();
                Answers.Columns.Add("QuestionID");
                Answers.Columns.Add("Answers1");
                DataRow dr = Answers.NewRow();
                dr["QuestionID"] = "102938382832";
                dr["Answers1"] = "正常";
                Answers.Rows.Add(dr);
                dr = Answers.NewRow();
                dr["QuestionID"] = "102374834812";
                dr["Answers1"] = "正常";
                Answers.Rows.Add(dr);
                dr = Answers.NewRow();
                dr["QuestionID"] = "102938476366";
                dr["Answers1"] = "不正常";
                Answers.Rows.Add(dr);
                dt.Columns["Answers1"].ColumnName = "Answers";
      

  7.   


                #region构造测试DataSet0
                DataSet DataSet0 = new DataSet();
                DataTable Answers = new DataTable();
                Answers.Columns.Add("QuestionID");
                Answers.Columns.Add("Answers1");
                DataRow dr = Answers.NewRow();
                dr["QuestionID"] = "102938382832";
                dr["Answers1"] = "正常";
                Answers.Rows.Add(dr);
                dr = Answers.NewRow();
                dr["QuestionID"] = "102374834812";
                dr["Answers1"] = "正常";
                Answers.Rows.Add(dr);
                dr = Answers.NewRow();
                dr["QuestionID"] = "102938476366";
                dr["Answers1"] = "不正常";
                Answers.Rows.Add(dr);
                Answers.TableName = "Answers";
                DataSet0.Tables.Add(Answers);
                #endregion            //处理部分
                DataSet DataSet1 = new DataSet();
                DataTable dt = new DataTable();
                dt = DataSet0.Tables["Answers"].Copy(); 
                dt.Columns["Answers1"].ColumnName = "Answers";
                dt.TableName = "Answers";
                DataSet1.Tables.Add(dt); 
    直接拿去用吧 已经写好了
      

  8.   

    Clone和copy是不一样的,LZ理解这个就可以了
    http://www.cnblogs.com/GoGoagg/archive/2008/07/28/1244308.html楼主希望的是深 copy还是浅copy呢?
      

  9.   

    有这么麻烦? 
    我觉得只要在程序中创建一个新的表,然后将取到的表复制到这个表中,接着修改这个新表达字段,最后放进LZ要放入的DATASET中OK?
    别说我小白 
      

  10.   

    满意结帖 :) 谢谢大家!特别谢谢 houyizhinv :)