3

我尝试了以下代码,我需要根据 NAME 字段随机行而不重复。

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

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

List list = (from c in db.Logos where c.LogoName != "empty.png" select c).OrderBy(r => Guid.NewGuid()).Take(3).ToList();

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

4

2 回答 2

2

你能试试下面的吗?

var result = (from logo in db.Logos
             where (logo.LogoName != "empty.png")
             orderby logo.LogoName
             select logo).Distinct();
于 2013-08-16T09:33:46.227 回答
0

您正在分组之前进行排序。这完全失去了排序。

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

此查询的性能不会那么好,但这似乎不是您最关心的问题。它在小数据集上会很快。

于 2013-08-16T13:49:25.477 回答