猿问
从Linq到SQL的随机行
从Linq到SQL的随机行
当我有条件时,使用Linq到SQL检索随机行的最佳(也是最快的)方法是什么,例如某些字段必须是真的?
慕的地10843
浏览 402
回答 3
3回答
慕虎7371278
我只是注意到这是LINQtoSQL,而不是LINQtoObjects。使用Marc的代码获取数据库来为您完成此操作。我把这个答案放在这里,作为LINQtoObjects的潜在兴趣点。奇怪的是,你其实不需要拿到伯爵。但是,除非得到计数,否则需要获取每个元素。您可以做的是保留“当前”值和当前计数的概念。获取下一个值时,取一个随机数,并将“Current”替换为“new”,概率为1/n,其中n是计数。所以当您读取第一个值时,总使之成为“当前”值。当您读取第二个值时,强权使其为当前值(概率为1/2)。当您读取第三个值时,强权使当前值(概率为1/3)等等,当您用完数据时,当前值是您所读取的所有值中的随机值,且概率是一致的。若要将其应用于条件,只需忽略任何不符合条件的内容。最简单的方法是首先应用WHERE子句,只考虑开头的“匹配”序列。下面是一个快速实现。我想没事的.。public static T RandomElement<T>(this IEnumerable<T> source, Random rng){ T current = default(T); int count = 0; foreach (T element in source) { count++; if (rng.Next(count) == 0) { current = element; } } if (count == 0) { throw new InvalidOperationException("Sequence was empty"); } return current;}
0
0
0
随时随地看视频
慕课网APP
相关分类
C#
typedef入门问题
1 回答
.NET
.net 中 字符串含有超链接,如何给超链接自动加上a标签?
1 回答
请问.net 中用jquery传值安全吗?
2 回答
我要回答