生成随机数会吗?
使用random类,生成一个从0到行数-1的随机数,表示从哪行移走
再生成一个,表示插入哪里

解决方案 »

  1.   

     Random rd = new Random();
     int row1;
      row1 = rd.Next(0, dtable.Rows.Count);
      

  2.   


     Random rd = new Random();
                int row1;
                row1 = rd.Next(0, dt.Rows.Count);
                dt.Rows.InsertAt(dt.Rows[row1], row1);
      

  3.   

    随机打乱顺序而已..
    var NewDt=dt.AsEnumerable().OrderBy(d => Guid.NewGuid()).CopyToDataTable();
      

  4.   

    Quote: 引用 6 楼 Z65443344 的回复:

    其实就是加一个"行号"列,然后里面填充随机数,然后根据行号做个排序[/qu
    嗯,这种方法我明白了但是数据太多的话  计算量太大了。。可否这样:我先随机产生两个随机数M,N,然后复制第M行数据,然后再将M行数据删除,将这行数据插入到产生的第N行的位置。。插入的函数是哪个??
      

  5.   

    数据很大?试试这个
    dt.AsEnumerable().AsParallel().OrderBy(d => Guid.NewGuid()).CopyToDataTable();
      

  6.   

    删除是remove
    插入是insertAt
      

  7.   

       Random rd = new Random();
                int row1,row2;//,row3,row4;
                
                      row1 = rd.Next(0, dtable.Rows.Count-1);
                      row2 = rd.Next(0, dtable.Rows.Count-1);
                      DataRow r1 = dtable.NewRow();
                      if (row1 != row2)
                      {
                          r1.ItemArray = dtable.Rows[row1].ItemArray;
                          dtable.Rows.Remove(row1);
                          dtable.Rows.InsertAt(r1, row2);
                      }
    这样写有问题吗???会出现报错。错误 无法从“int”转换为“System.Data.DataRow”???如何更改??
      

  8.   

     Random rd = new Random();
                int row1,row2;//,row3,row4;
                
                      row1 = rd.Next(0, dtable.Rows.Count-1);
                      row2 = rd.Next(0, dtable.Rows.Count-1);
                      DataRow r1 = dtable.NewRow();
                      if (row1 != row2)
                      {
                          r1.ItemArray = dtable.Rows[row1].ItemArray;
                          dtable.Rows.Remove(row1);
                          dtable.Rows.InsertAt(r1, row2);
                      }
    这样写有问题吗???会出现报错。错误 无法从“int”转换为“System.Data.DataRow”???如何更改??
      

  9.   


                DataTable dt = new DataTable("");
                dt.Columns.Add("id", typeof(int));
                dt.Columns.Add("name", typeof(string));
                dt.Rows.Add(1, "小明111");
                dt.Rows.Add(2, "小明222");
                dt.Rows.Add(3, "小明333");
                dt.Rows.Add(4, "小明444");
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    Console.WriteLine(dt.Rows[i][0].ToString() +"__"+ dt.Rows[i][1].ToString());
                }
                DataTable newDt = dt.AsEnumerable().AsParallel().OrderBy(d => Guid.NewGuid()).CopyToDataTable();
                for (int i = 0; i < newDt.Rows.Count; i++)
                {
                    Console.WriteLine(newDt.Rows[i][0].ToString() + "__" + newDt.Rows[i][1].ToString());
                }因为我看到你说把随机的一行 扔到随机的位置..我个人理解的话 就是把表格打乱了 不知道我理解的对不对..当然我这是全部,而你只要一个 是吗?
      

  10.   

    DataRow dr=dtable.NewRow();
    for(int i=0;i<dtable.Columns.Count;i++)
    {
    dr[i]=dtable.Rows[row1][i];
    }
    dtable.Rows.Remove(row1);
    dtable.Rows.InsertAt(row2, dr);
      

  11.   

    row1,row2是int类型
    应该用dtable.Rows.RemoveAt(row1);