2016-02-04 31 views
-1

如何獲取使用GUID隨機選擇的項目? 我用下面的方法試過了,但沒有排序?5行使用GUID從列表中隨機選擇

var Query1 = (from _factor in db.tblFactors orderby Guid.NewGuid() select _factor) 
    .Take(5); 
var Query2 = (db.tblFactors 
    .Select(x => new { x.ID, x.Cost, x.UserID, fldOrder = Guid.NewGuid() }) 
     .OrderBy(x => x.fldOrder)) 
     .Take(5); 

當然,這裏的問題是二:

-One是,爲什麼我的代碼不工作

- 第二,不使用GUID這種方法隨機選擇是不是真的

+0

對於問題2檢查http://stackoverflow.com/questions/467271/how-random-is-system-guid-newguid –

+0

謝謝但它沒有幫助解決問題 –

+0

我沒有看到任何隨機的這是由於GUID的生成會產生相當有序的結果(接近但不完全相同,它們將具有很多共同性) - 也許會放入一個真正的隨機數然後再按這個順序排列在這裏會是一個更好的策略?事實上,我懷疑該集合中第一個或最後五個行的概率很高。 –

回答

0
List<tblFactor> _factor = db.tblFactors.ToList(); 
_factor = _factor.OrderBy(o => Guid.NewGuid()).ToList(); 
_factor = _factor.Take(5).ToList(); 
lst1.DataSource = _factor; 
lst1.DataBind(); 

5行使用GUID

固定列表中隨機選擇!