2017-01-02 5 views
0

データベース内のランダムなコンテンツを見つけるにはシャッフルが必要ですが、データベース内のどこに問題があるか調べれば大きな影響があります。タグをデータベースから数えてランダムに使用する

私は彼女を見ている:https://stackoverflow.com/a/654910/7180653

これは私が私が説明したようにそれを行うために試みた方法です。しかし、それは私の価値の大義に間違いを与えます。あなたは(メモリにそれをもたらしているあなたのToListメソッド())メモリではなく、データベース自体でそれを行うには満足しているよう

Random rnd = new Random(); 
      int value = rnd.Next(db.Quiz.ToList().Count()); 
      List <QuizModelView> result = db.Quiz.Select(x => new QuizModelView 
      { 
       Heading = x.Heading, 
       ReplayText = x.Reply.Text, 
       ReplayCheck = x.Reply.CheckReply 
      }).ToList(); 
      return result.Shuffle(value); 
+0

何が問題なのですか? –

+0

C#Linqに 'Shuffle(...) 'というメソッドはありません。 –

+0

@ m.rogalski彼は文字通り彼がリンクした答えをコピーしたと思うが、その答えはShuffle()が拡張メソッドであると仮定して与えられた。 @ジェスパー私はあなたの問題だと思う、あなたはより良い投稿を読むことがあります。 – RandomStranger

答えて

1

、あなたがthis answerからシャッフルのようなものを使用することができます見て:

フィッシャーイエーツシャッフルに基づいて拡張メソッドを持つ任意の(I)のリストをシャッフル:

private static Random rng = new Random(); 

public static void Shuffle<T>(this IList<T> list) 
{ 
    int n = list.Count; 
    while (n > 1) { 
     n--; 
     int k = rng.Next(n + 1); 
     T value = list[k]; 
     list[k] = list[n]; 
     list[n] = value; 
    } 
} 

使用法:

List <QuizModelView> result = db.Quiz.Select(x => new QuizModelView 
{ 
    Heading = x.Heading, 
    ReplayText = x.Reply.Text, 
    ReplayCheck = x.Reply.CheckReply 
}).ToList(); 
result.Shuffle(); 
return result; 
+0

エラー@ EFで作る「HelperStaticRandomValue.Shuffle (IEnumerableを、ランダム)」が必要な仮パラメータ「RNG」に対応して与えられた引数はありません –

+0

私はその今完了しています。 –

+0

ありがとうございました。素晴らしい一日を過ごすことができます! –

関連する問題