你应该可以利用当前时间做种子,用Random.Next(minValue,MaxValue)的方法取得随机key字段的值。然后找到此条记录~~~(DataTable.Select方法)局限:
必须有一个key字段(主键,int型),要先取得key字段的最大值和最小值

解决方案 »

  1.   

    一个很差的办法,可是也能用:比如1-100之间提取
    int[] xxx=new int[100];
    for(int i=0;i<100;i++)xxx[i]=i;
    int[] resault=new int[你要选取的数量];
    for(int i=0;i<你要选取的数量;i++)
    {//随机找到数组中的一位数字,把它数组中包含的数字提取出来,然后把选取过的数字与最后一位数组内数字互换,下次选取的时侯radom范围在0-99数组之间的数字,下次0-98数组,....
    int temp=Radom(0,100-i);
    resault[i]=xxx[temp];
    xxx[temp]=xxx[100-i];
    }
      

  2.   

    最后得到的resault[]内包含了你需要的选取的不重复且在0-100的数字
      

  3.   

    to:qimini(循序渐进)
    你的意思,是我的表中要有一个主键?可是DataTable中有一个游标的了。以游标作为关键字段行不行。
    比如,我共有20条记录,要随机抽取3条。不能重复,是否这样可以:
    ArrayList al = new ArrayList();
    for(int i=0;i<3;i++)
    {
        int k = Random.Next(0,19);
        string str = DataTable.Rows[k]["name"].ToString();
        al.Add(str);
    }好像不行吧?
      

  4.   

    to:bankliu(他们也在对付,反正他们赚的钱比我们多!)
    谢谢。
    我使用的是Assess数据库,能否从直接随机从数据库读取n条数据?
      

  5.   

    TO reformer((问自己最不懂的问题)) :不是这样理解的,不能重复的标准是主键不同(PK_ID)。如果你想要的是varchar或者nvarchar类型的数据不能重复的话,你只能手动去比对了(效率好象也不低的)ArrayList al = new ArrayList();
    for(int i=0;i<10;i++)//假设你要取10条随机记录
    {
        Random rad=new Random(DateTime.Now.Millisecond);
        Int32 k = Random.Next(0,19);
        DataRow[] dr= DataTable.Select("PK_ID="+k.ToString().Trim());//PK_ID是主键
        al.Add(str);
    }
      

  6.   

    既然你生成的是随机的数量,就不用管数据库中什么是主键,只要有数据库记录数量就可以了
    我用的是数学方法,如果你数据库中有n条记录,你要从0-n内选出x1,x2,x3....
    那么就这麽写:其中n是你的记录总数,m是你要生成的随即数数量,
    在resault[0-m]内存贮的就是随机不重复的记录顺序号了.
    int[] xxx=new int[n];
    for(int i=0;i<n;i++)xxx[i]=i;
    int[] resault=new int[m];
    for(int i=0;i<m;i++)
    {//随机找到数组中的一位数字,把它数组中包含的数字提取出来,然后把选取过的数字与最后一位数组内数字互换,下次选取的时侯radom范围在0-99数组之间的数字,下次0-98数组,....
    int temp=Radom(0,n-i);
    resault[i]=xxx[temp];
    xxx[temp]=xxx[n-i];
    }
      

  7.   

    希望你能看懂!~我是把0-n每用radom找到一位,就把找到的这个数放在最后,把最后的放在前面
    然后缩小选择范围,继续随机生成,所以不用比对,直接生成~
      

  8.   

    to:bankliu(他们也在对付,反正他们赚的钱比我们多!) ( ) 
    我能理解你的意思。
    谢谢