我以经把一张表的数据放在DataTable中,之后我又把DataTable放到cache里,现在要做的是随机从这个cache中取3条数据。哎!!昨天一天没人回贴郁闷。     或者有没有更好的解决办法?总之我要实现的功能是取500条数据放在cache中,然后在每隔一小时从cache中随机取出三条数据显示在web页上。这个问题我感觉不难,但我是菜鸟……

解决方案 »

  1.   

    DataTable dt = 存在cache中的数据        DataTable newDt = dt.Clone();
            System.Random rd = new Random();
            for (int i = 0; i < 3; i++)
            {
                int x = rd.Next(0, 499);
                newDt.Rows.Add(dt.Rows[x].ItemArray);
            }
            newDt.AcceptChanges();        //最后,把newDt绑定到DataGrid显示在页面上
      

  2.   

    private DataRow[] GetRandRows(DataTable dt,int count)
        {
            DataRow[] drs = new DataRow[3];
            int index = 0;        for (int i = 0; i < count; i++)
            {
                Random rad = new Random();
                index = rad.Next(0, 499);
                drs[i] = dt.Rows[index];
            }
            return drs;
        }
      

  3.   

    给你写个通用的,一次取count条随机记录:
        private DataRow[] GetRandRows(DataTable dt,int count)
        {
            DataRow[] drs = new DataRow[count];
            int index = 0;        for (int i = 0; i < count; i++)
            {
                Random rad = new Random();
                index = rad.Next(0, dt.Rows.Count-1);
                drs[i] = dt.Rows[index];
            }
            return drs;
        }
      

  4.   


    Eddie005(♂) №.零零伍 (♂) 我按你的方法做了出现以下错误。
    C:\Inetpub\wwwroot\ioio\chche\chche.aspx.cs(35): 无法将类型“object”隐式转换为“System.Data.DataTable”
    C:\Inetpub\wwwroot\ioio\chche\chche.aspx.cs(36): 无法将类型“void”隐式转换为“System.Data.DataTable”