![]() |
1
165
您可以在数据库中使用一个伪UDF;在分部类中,向数据上下文添加一个方法:
然后只是
请注意,这只适用于中小型表;对于大型表,它将在服务器上产生性能影响,并且查找行数的效率会更高。(
对于计数方法:
|
![]() |
2
58
实体框架的另一个示例:
这不适用于Linq to SQL。这个
|
![]() |
3
29
编辑:我只注意到这是Linq to SQL,而不是Linq to对象。使用Marc的代码让数据库为您完成这项工作。我把这个答案留在这里,作为LinqToObjects的潜在兴趣点。 奇怪的是,你实际上不需要计算。但是,您需要获取每个元素,除非您获得计数。 你能做的就是保持“当前”值和当前计数的概念。当您获取下一个值时,取一个随机数,将“current”替换为“new”,概率为1/n,其中n是计数。 所以当你读到第一个值时, 总是 将其设为“当前”值。当你读到第二个值时,你 可以 使其成为当前值(概率为1/2)。当你读到第三个值时, 可以 使当前值(概率1/3)等。当您用完数据时,当前值是您所阅读的所有数据中的一个随机值,具有统一的概率。 要在条件中应用它,只需忽略不满足条件的任何内容。最简单的方法是只考虑从“匹配”序列开始,首先应用一个WHERE子句。 这是一个快速的实现。我 认为 没关系…
|
![]() |
4
18
一种有效的方法是在数据中添加一列
以随机顺序访问表的部分查询是…
这将在数据库中执行XOR操作,并根据该XOR的结果进行排序。 优点:
这是我家自动化系统用来随机化播放列表的方法。它每天选择一个新的种子,在一天中给出一个一致的顺序(允许轻松的暂停/恢复功能),但在每个新的一天重新查看每个播放列表。 |
![]() |
5
7
如果你想得到例如
这里我用了e.f,表是一个dbset |
![]() |
6
1
如果获取随机行的目的是抽样,我已经简单地谈过了 here 关于Larson等人的一个好方法,微软研究团队已经开发了一个使用物化视图的SQL Server采样框架。还有一个链接指向实际的纸张。 |
![]() |
7
1
来这里想知道如何从一小部分随机页面中获取几个随机页面,这样每个用户都会得到一些不同的随机3个页面。 这是我的最终解决方案,使用Linq查询SharePoint2010中的页面列表。它在Visual Basic中,对不起:p
可能应该在查询大量结果之前进行一些分析,但这对于我来说是完美的。 |
![]() |
8
1
说明:通过插入guid(随机),order by的顺序将是随机的。 |
![]() |
9
0
我有随机函数查询
|
![]() |
10
0
下面的示例将调用源以检索计数,然后对数字介于0和n之间的源应用跳过表达式。第二个方法将使用随机对象应用顺序(该对象将对内存中的所有内容排序),并选择传递给方法调用的数字。
|
![]() |
11
0
我用这种方法来获取随机新闻,它的工作很好;)
|
![]() |
12
0
在linqpad中使用linq to sql作为c语句看起来像
生成的SQL是
|
![]() |
13
0
如果你使用 林帕德 切换到 C语言程序 按以下方式操作:
|
![]() |
14
0
随机选择2行 |
![]() |
15
0
添加到Marc Gravell的解决方案中。如果您不使用DataContext类本身(因为您以某种方式代理它,例如为了测试目的而伪造DataContext),则不能直接使用定义的UDF:它将不会编译为SQL,因为您没有在实际数据上下文类的子类或部分类中使用它。 解决此问题的方法是在代理中创建一个随机化函数,向其提供要随机化的查询:
下面是在代码中使用它的方法:
要完成,这是如何在假数据上下文(使用内存中的实体)中实现此功能:
|
![]() |
Rm558 · 是否可以更改XML类型上的LINQPad代码生成? 7 年前 |
![]() |
MJK · 规范模式-使用ICollection实现表达式 7 年前 |
![]() |
Roland Ebner · 为实体框架多对多关系构建表达式树? 7 年前 |