2013-08-16 18 views
3

我已經嘗試了以下代碼,我需要根據NAME字段隨機行進行出局重複。使用實體框架選擇沒有重複的隨機行4.5 mvc4

名單列表= db.Logos.Where(A => a.LogoName!= 「empty.png」)。排序依據(R => Guid.NewGuid()).GroupBy(A =>一個。 LogoName) .Select(g => g.FirstOrDefault())。Take(8).ToList();

,但我沒有得到隨機,但我已經試過這是正確洗牌另一個代碼,但複製下面

名單列表代碼可能不適用,代碼=(從C在db.Logos 其中c .LogoName!=「empty.png」 select c).OrderBy(r => Guid.NewGuid())。Take(3).ToList();

請幫助如何選擇重複和隨機行。

回答

2

你可以試試下面的嗎?

var result = (from logo in db.Logos 
      where (logo.LogoName != "empty.png") 
      orderby logo.LogoName 
      select logo).Distinct(); 
+0

此代碼沒問題,但我需要隨機選擇具有該代碼的行 – Sajith

+0

是否要爲每個查詢執行使用隨機記錄? –

+0

是的,我需要那 – Sajith

0

您正在進行分組前的排序。完全失去了排序。

db.Logos 
.Where(a => a.LogoName != "empty.png") 
.GroupBy(a => a.LogoName) 
.Select(g => g.FirstOrDefault()) 
.OrderBy(r => Guid.NewGuid()) 
.Take(8) 
.ToList(); 

該查詢的性能不會太好,但這似乎不是您最關心的問題。它在小數據集上會很快。