星空网 > 软件开发 > ASP.net

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




原标题:C# 如何从List集合当中取出子集合

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

巴西电商挑战:https://www.goluckyvip.com/tag/13626.html
正规运营:https://www.goluckyvip.com/tag/13627.html
安全运营方法:https://www.goluckyvip.com/tag/13628.html
非洲一体化:https://www.goluckyvip.com/tag/13629.html
万美元:https://www.goluckyvip.com/tag/1363.html
网红质量检验:https://www.goluckyvip.com/tag/13630.html
23点聊电商:新质生产力加速数字贸易发展 卓尔智联集团实现营收利润双增长 :https://www.kjdsnews.com/a/1836411.html
南京浦口都有什么好玩的地方 南京浦口都有什么好玩的地方推荐:https://www.vstour.cn/a/363180.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流