zoukankan      html  css  js  c++  java
  • C# 如何从List集合当中取出子集合

    今天项目要求随机从数据库中随机取出若干条数据,放到首页。那么要如何随机取出这个子集合呢?本人向到的方法如下:

    1、假设数据量很少,如我数据库中只有10条数据,而我要求随机取出8条。对于这种低数据量,大可以一次过全部取出放到父集合当中,然后随机remove去两条。

                List<Model> list = new  MyService().QueryList().ToList();
                Random random=new Random();   //注意,不能在while里面创建random因子,因为这样会导致随机因子失效。
                while(list.Count()>8)
                {
                    int index=random.Next(list.Count());
                    list.RemoveAt(index);
                }        

    2、假设数据量适中,我测试的表格数据量是387332条数据,id是uniqueidentifier类型,共取出8条数据,一共用了3秒时间。(如果id是int的自增类型,会更快)。

                Random random = new Random();
                StringBuilder sb = new StringBuilder();
    
                sb.Append("select * from (select ROW_NUMBER()Over(ORDER BY 某一字段) as 'x',* from tablename) as a where ");
                //假设你要从中取8条数据
                int total = new MyService().QueryCount();  //假设这个是表格数据的总条数
                int count = total / 8;
                for (int i = 0; i < 8; i++)
                {
                    if (i == 7)
                    {
                        //最后一次
                        sb.Append(" a.x=" + random.Next(count * i, total).ToString());
                    }
                    else
                    {
                        //不是最后一次
                        sb.Append(" a.x=" + random.Next(count * i, count * (i + 1)).ToString()+" or"); 
                    }
                }
                string sql = sb.ToString();
                //最后得出了sql语句,现在就可以查出 以count为间隔 的随机集合。

    3、如果数据量很巨大,得到百万千万级的,那么就需要数据库本身的索引来处理了,最常见的便是自增型的id,因为以这个id来order排序相当于不用排序。其他情况我也没很深的理解,网上资料很多,只有自行查阅了。

    Empower every person and every organization achieve more in my blog.
  • 相关阅读:
    ELK Packetbeat 部署指南
    ELK beats平台介绍
    ELK Packetbeat 部署指南(15th)
    什么是staging server
    elasticsearch学习一、安装和配置
    How To Use Logstash and Kibana To Centralize Logs On CentOS 6
    Java字节码(.class文件)格式详解(一)
    JVM之字节码——Class文件格式
    如何获得JVM执行过程中调用的方法名
    ELK beats通用配置说明(12th)
  • 原文地址:https://www.cnblogs.com/loda7023link/p/5121708.html
Copyright © 2011-2022 走看看