2016-02-04 30 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

固定列表中随机选择!