2017-01-02 36 views
0

我需要隨機查找數據庫中的隨機內容,但如果我找到數據庫中發生問題的位置,它將產生巨大影響。來自數據庫的標籤計數並將其作爲隨機使用

我有看她:https://stackoverflow.com/a/654910/7180653

這是怎麼了,我試圖做到這一點,因爲我已經描述。但它會給我的價值帶來錯誤。

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()'是一個擴展方法。 @Jesper我認爲這是你的問題,你可能想更好地閱讀帖子。 – RandomStranger

回答

1

看到你很高興做的內存,而不是在數據庫本身(您ToList()正將其插入存儲),那麼你可以使用類似的洗牌從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

錯誤:沒有給出的參數對應於'HelperStaticRandomValue.Shuffle (IEnumerable ,Random)'所需的形式參數'rng'' –

+0

我已經完成它的現在。 –

+0

感謝您的幫助。你可以有一個美好的一天! –