回答

收藏

SQL Server /实体框架-如何按随机数排序,然后在以后重现结果?

技术问答 技术问答 274 人阅读 | 0 人回复 | 2023-09-12

我正在将ASP.NET MVC 5和Entity Framework与Microsoft SQL Server一起使用后端。
1 {) D- q+ c1 |/ Y! @在简短的版本中,我想进行搜索,随机排序一些内容,然后在未来显示搜索结果。* S4 ^, [3 L4 _' z3 ~
详细版本,理论上,我的商店有100万种商品。每种商品都有五个不同的卖家。我用实体框架提取了只有一个卖家加入的所有100万条记录。通过随机编号订购并首先选择,即随机选择卖方。假设显示10个结果的结果页面,一旦我转到第2页,然后返回到第1页,我希望第一个项目有与第一个随机卖家相同的随机卖家,而不是再次随机采摘卖家。如果他们正在看卖方的商品,然后再看一遍,那将是一个糟糕的用户体验。价格会改变,等等。3 J& H- i7 X/ I3 Z- C7 I  k: i
现在,我已经通过制作搜索结果表来解决这个问题。我存储了卖方随机选择的搜索项目。这样,搜索后,我只检查搜索结果表,而不是再次执行搜索。当我有大约100个项目时,这很好,但现在我有很多记录的可能性,我不想每次都存储100万个记录。
, f: i0 d! ]1 u0 b* h* v除非有人认为有更好的方法,否则我不确定如何应用。如果我能存储生成随机数的方法,然后存储一个只包含种子的搜索结果的记录,然后我再次使用种子进行搜索,它将随机得到同一卖方第一次返回的结果,我该怎么办?. a4 R) t/ C  h# ~
有可能吗?如果是这样的话,我如何在实体框架中调用随机变量,并为它提供种子来产生相同的结果?. B; J+ B( F4 k/ I9 ~# a& k
希望答案涉及实体框架。
( \6 U* k! s- G1 \! ]编辑
7 A+ c( L9 A- ]' {2 Z实体框架注释中提到的随机想法如下:
( `8 \" @$ P7 {3 S0 Jvar test = DateTime.Now.Ticks;Random rand = new Random((int)test);query.OrderBy(o => rand.Next()).ToList()//Save test in database so we can retrieve it later to get the same results我有一个例外:, k0 i( k' J+ x5 y3 g$ h6 K
“ LINQ to Entities无法识别’Int32 Next()’该方法不能转换为商店表达式。9 e, j5 I, n% j; @
我想如果我能做到的话entityframework如果你打得好,这将是答案。( u3 x: ^. D: q. {! }2 |
                                                                , j) S* H' ]7 |' Q
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则