[英]Linq Returning random entities after join
我試圖從我寫的i join查詢中返回隨機實體。 但它不會隨機返回。 實體之前總是一樣的。 可能是什么問題? 這是查詢
var query = (from b in db.BrandTbls.AsQueryable()
join m in db.ShoeModelTbls on b.BrandID equals m.BrandID
join s in db.ShoeTbls on m.ModelID equals s.ModelID
join i in db.ShoeImageTbls on s.ShoeID equals i.ShoeID
group new {b,m,s,i} by new {b.BrandName,m.ModelName,m.Price,s.PrimaryColor,s.SecondaryColor,i.ImagePath} into g
orderby Guid.NewGuid()
select new {g.Key.BrandName,g.Key.ModelName,g.Key.ImagePath,g.Key.Price,g.Key.PrimaryColor,g.Key.SecondaryColor}).OrderBy(x => Guid.NewGuid()).Take(8);
GUID不是隨機數。 它們是唯一的數字 。 有許多方法可以生成唯一值,其中許多都不是隨機的。 生成的GUID值甚至可能單調遞增,這意味着對序列中每個項目的新guid進行排序將導致每個項目保持完全相同的順序。
對一組數據進行混洗是一個明確定義的問題,具有明確定義的解決方案。 您應該使用一個記錄良好的解決方案來解決混亂問題,從而可靠,高效地混合數據集合。
orderby Guid.NewGuid()
類似於orderby 1.它不會導致隨機返回。
我建議讓SQL做隨機化行為。 看一下這個例子:
您可以創建一個空的Random方法,LINQ將轉換為對SQL的Random T_SQL調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.