我正在使用
Asp.net MVC与Sharp Architecture.
我有这个代码:
return _repositoryKeyWord.FindAll(x => x.Category.Id == idCAtegory) .Take(50).ToList();
我如何随机订购?
注意:我不想订购50个提取的项目,我想要订单,然后提取50个项目.
THKS
解决方法
实现高效的一种方法是向列数据添加一个随机int(创建每个记录)的随机播放.
然后访问表的查询将成为…
Random random = new Random(); int seed = random.Next(); result = result.OrderBy(s => (~(s.Shuffle & seed)) & (s.Shuffle | seed)); // ^ seed);
这在数据库中进行XOR操作,并根据XOR的结果进行排序.
优点:-
>高效:sql处理
订购,不需要取整
表
>可重复:(适合)
测试) – 可以使用相同的随机
种子生成相同的随机
订购
>大多数(所有?)实体框架支持
数据库
这是我的家庭自动化系统随机播放列表所使用的方法.它每天选择一个新的种子,在白天提供一致的顺序(允许简单的暂停/恢复功能),但每个新的一天清新的每个播放列表.