0

LINQ 2 SQL を使用してテーブルからランダムな行を選択する最良の方法について疑問に思っていましたが、検索中に次の 2 つの質問が見つかりました。

Linq から Sql へのランダムな行

LINQtoSQL でランダムな行を取得する

しかし、msdn using NewID() is a bad way to select rows to random and on this article によると、これが最善かつ最速の方法だとは思いません:

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コードに変換するのを手伝ってくれれば、もっと簡単になります)

ご協力いただきありがとうございます

4

1 に答える 1

-1

そのような何かがうまくいくでしょうか?

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;
于 2012-05-24T08:06:11.080 に答える