使用实体framework4.5 mvc4选择无重复的随机行

时间:2013-08-16 09:23:51

标签: asp.net-mvc entity-framework

我尝试过以下代码,我需要根据NAME字段随机排除重复。

  

列表list = db.Logos.Where(a => a.LogoName!=   “empty.png”)。OrderBy(r => Guid.NewGuid())。GroupBy(a => a.LogoName)   。选择(g => g.FirstOrDefault())。Take(8)。ToList();

但我没有随机,但我尝试了另一个正确改组的代码,但重复的代码无法应用,代码如下

  

列表列表=(来自db.Logos中的c)                                      其中c.LogoName!=“empty.png”                                      选择c).OrderBy(r => Guid.NewGuid())。Take(3)。ToList();

请帮助您选择如何选择重复行和随机行。

2 个答案:

答案 0 :(得分:2)

你能试试下面的吗?

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

答案 1 :(得分:0)

您正在进行分组前的订购。这完全失去了订单。

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

此查询的性能不会太高,但这似乎不是您主要关注的问题。在小数据集上会很快。