博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 如何从List集合当中取出子集合
阅读量:5251 次
发布时间:2019-06-14

本文共 1507 字,大约阅读时间需要 5 分钟。

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

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

List
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排序相当于不用排序。其他情况我也没很深的理解,网上资料很多,只有自行查阅了。

转载于:https://www.cnblogs.com/loda7023link/p/5121708.html

你可能感兴趣的文章
3.PHP 教程_PHP 语法
查看>>
Duilib扩展《01》— 双击、右键消息扩展
查看>>
利用Fiddler拦截接口请求并篡改数据
查看>>
python习题:unittest参数化-数据从文件或excel中读取
查看>>
在工程中要加入新的错误弹出方法
查看>>
PS 滤镜— — sparkle 效果
查看>>
网站产品设计
查看>>
代理ARP
查看>>
go 学习笔记(4) ---项目结构
查看>>
java中静态代码块的用法 static用法详解
查看>>
Java线程面试题
查看>>
Paper Reading: Relation Networks for Object Detection
查看>>
day22 01 初识面向对象----简单的人狗大战小游戏
查看>>
mybatis源代码分析:深入了解mybatis延迟加载机制
查看>>
Flask三剑客
查看>>
Hibernate-缓存
查看>>
【BZOJ4516】生成魔咒(后缀自动机)
查看>>
提高PHP性能的10条建议
查看>>
svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法...
查看>>
熟用TableView
查看>>