我应该如何构建一个Linq查询来返回我的数据库中最流行的标签的List或Ienumerable(我顺便使用EF4.1)。
目前我有:
var tagsListing = db.Tags
.GroupBy(q => q.Name)
.OrderByDescending(gp => gp.Count())
.Take(5)
.Select();
我认为我是那里的一部分,但我不确定如何构建Select语句......
答案 0 :(得分:2)
您的Select
来电可能如下:
.Select(gp => gp.Key)
这将为您提供IEnumerable<string>
个最受欢迎的代码(假设Name
为string
)。
答案 1 :(得分:1)
假设您需要名称和计数,只需:
.Select(g => new { Name = g.Key, Count = g.Count() });
编辑:如果你想要完整的标签,可以使用:
.Select(g => new { Tags = g, Count = g.Count() })
它会为您提供一系列 groups 标记,这些标记在一个组中具有相同的名称。或者您可能只需要每个组中的第一个标记,例如
.Select(g => g.First())
目前尚不清楚标记的内容是什么,或者结果中您想要的完全。
答案 2 :(得分:1)
您编写了一个完美可行的查询,无需致电.Select
IQueryable<IGrouping<string, Tag>> tagsListing = db.Tags
.GroupBy(q => q.Name)
.OrderByDescending(gp => gp.Count())
.Take(5);
List<IGrouping<string, Tag>> results = tagListing.ToList();
答案 3 :(得分:0)
您可能想要选择如下名称:
.Select(gp => gp.Key);