2010-04-23 51 views
2

好的,我在使用LINQ時發現了很多關於如何從數據庫中提取RANDOM項的文章。似乎有幾種不同的方式來處理這個問題。我需要做的是從數據庫中提取一個用戶以前沒見過的RANDOM項目。如何通過LINQ從SQL中獲取RANDOM和UNIQUE記錄

我從數據庫中提取的數據非常小。有什麼方法可以爲1000條記錄打一次數據庫,然後隨機滾動瀏覽這些記錄?

我應該在用戶系統上放置一個cookie,記錄他們已經看到的物品的ID,拉一個隨機記錄,檢查它是否被看到,如果是,再次從數據庫中拉出?這看起來像是等待發生的性能問題。

我不指望任何人爲我編碼,我只是在尋找概念,並指出我應該如何去做這件事的正確方向。

需要更多的細節?請讓我知道!

回答

1

這個問題的通常答案是創建一個隨機排序的列表併線性滾動。所以,你會使用一個隨機算法它拉

a, b, c, d, e, f 

重新梳理,以

b, e, f, a, c, d 

,然後就做一個線性的步行路程。

+2

我還會添加 - 您可以存儲與個人相關聯的種子和序號位置,以便您不必存儲整個序列 - 它允許您重新計算並開始他們離開的位置。 – 2010-04-23 17:00:50

+0

當你有一個明確定義好的某種類型的鍵序列時,這將確定地工作。我會關心如何將該順序連接到按鍵順序中存在漏洞的一組記錄。 – 2010-04-23 17:28:40

+0

我確實最終使用了洗牌算法,此時我仍然要回數據庫來檢查該項目是否已被查看。我遇到的問題是這可能是對該網站的多次訪問,並且數據確實發生了變化。 – 2010-04-27 16:02:19

相關問題