Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ 2 SQL选择随机行_C#_Entity Framework_Linq To Sql_.net 4.0 - Fatal编程技术网

C# 使用LINQ 2 SQL选择随机行

C# 使用LINQ 2 SQL选择随机行,c#,entity-framework,linq-to-sql,.net-4.0,C#,Entity Framework,Linq To Sql,.net 4.0,我想知道使用LINQ 2 SQL从表中选择随机行的最佳方法,在搜索时,我发现了以下两个问题: 但我不认为这是最好最快的方法,根据msdn的说法,使用NewID随机选择行是一种不好的方法,在本文中: 他们提出了另一个比NewID方法更快的查询: SELECT * FROM Table1 WHERE (ABS(CAST( (BINARY_CHECKSUM(*) * RAND()) as int)) % 100) < 10 此查询背后的基本思想是,他们希望为表中的每一行生成一个

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

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

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

  SELECT * FROM Table1
  WHERE (ABS(CAST(
  (BINARY_CHECKSUM(*) *
  RAND()) as int)) % 100) < 10
此查询背后的基本思想是,他们希望为表中的每一行生成一个介于0和99之间的随机数,然后选择随机数小于指定百分比值的所有行

但当我尝试使用LINQ进行此操作时,我找不到与二进制校验和等价的方法

那么它们是LINQ中二进制_校验和的等价物吗

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


谢谢你的帮助

这样做行吗

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;

您的查询遗漏了一些位,至少是select和结尾的分号。这不可能被翻译为SQL@erikkallen他们的问题是关于linq到sql和EF的,不是吗?没有投票权的人。