使用 LINQ 2 SQL 选择“随机行”

本文关键字:随机 随机行 选择 LINQ SQL 使用 | 更新日期: 2023-09-27 18:34:55

我想知道使用 LINQ 2 SQL 从表中选择随机行的最佳方法,当我搜索时,我发现了这两个问题:

从 Linq 到 Sql 的随机行

使用 LINQtoSQL 获取随机行

但我不认为这是最好和最快的方法,根据msdn使用NewID((是随机选择行的糟糕方法,在本文中:

http://msdn.microsoft.com/en-us/library/cc441928.aspx

他们提出了另一个比NewID方法更快的查询:

  SELECT * FROM Table1
  WHERE (ABS(CAST(
  (BINARY_CHECKSUM(*) *
  RAND()) as int)) % 100) < 10

此查询背后的基本思想是,他们希望为表中的每一行生成一个介于 0 和 99 之间的随机数,然后选择随机数小于指定百分比值的所有行

但是当我尝试使用 LINQ 执行此操作时,我找不到等效的 BINARY_CHECKSUM

那么它们是否等同于 LINQ 中的BINARY_CHECKSUM?

这真的是随机选择行的最快方法吗?(如果你能帮我把它转换为LINQ代码,对我来说会容易得多(

感谢您的帮助

使用 LINQ 2 SQL 选择“随机行”

这样

的东西会起作用吗?

private static readonly Random _randomInstance = new Random();
private readonly Func<int, bool> ChanceSuccess = new Func<float, bool>(f =>
    _randomInstance.Next(0, 101) <= f);
var result = from row in Table1
             where ChanceSuccess(10)
             select row;