怎么把两个DataTable里的数据揉合在一个DataTable里,并同时并把原来两个表里的数据在新表里做一个随机排序?

解决方案 »

  1.   

    如果两个DataTable的结构一致的话,就容易了。
    你把一个DataTable中的DataRow一个一个的插到另外一个里面,
    随机排序做不到,你在用的时候可以按照自己的需要来排序。
      

  2.   

    但我在这样写时怎么出错呢:
            DataSet Ds1 = new DataSet();
            DataTable Dt = new DataTable();
            for (int i = 0; i < 3; i++)
            {
                DataRow Dr = Ds.Tables[1].Rows[i];
                Dt.Rows.Add(Dr);
            }
            Ds1.Tables.Add(Dt);说这行已属于另一个数据表了:            Dt.Rows.Add(Dr);
      

  3.   

    DataSet Ds1 = new DataSet();
            DataTable Dt = new DataTable();
            for (int i = 0; i < 3; i++)
            {
                DataRow Dr = Ds.Tables[1].Rows[i];
                Dt.Rows.Add(Dr);
            }
            Ds1.Tables.Add(Dt);说这行已属于另一个数据表了:            Dt.Rows.Add(Dr);你这样写从程序的角度来说就没有错,但程序肯定是不能运行的,因为你的DataSet为NULL,你使用Table[1]取数据时就会出错,你填充DataSet后就可以了
      

  4.   

    火之光:
    问题是这样也有错:
            DataSet Ds1 = new DataSet();
            DataTable Dt = new DataTable();
            for (int i = 0; i < 3; i++)
            {
                DataRow Dr = Ds.Tables[1].Rows[i];
                Dt.Rows.Add(Dr);
            }
          //  Ds1.Tables.Add(Dt);
          //  DataSetList2.DS = Ds1;
          //  DataSetList2.DataBind();
    出错的是:           Dt.Rows.Add(Dr);
    和Ds没有关系。
     该行已经属于另一个表。
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.ArgumentException: 该行已经属于另一个表。源错误:行 33:         {
    行 34:             DataRow Dr = Ds.Tables[1].Rows[i];
    行 35:             Dt.Rows.Add(Dr);
    行 36:         }
    行 37:       //  Ds1.Tables.Add(Dt);
    源文件: d:\Test.aspx.cs    行: 35
      

  5.   

    Merge方法可以合并两个DataTable吧
    也可以用Rows的CopyTo方法,再添加到DataTable里
      

  6.   

    To :LifeForCode(用生命编程.重生(2006))CopyTo也不行,也会出同样的错误。用DataTable.ImportRow(DataRow)就行了谢谢大家。