分组后重新排序linq语句

时间:2013-03-05 16:25:17

标签: linq

基本上,我有一个类似的陈述

Contents
.Where(x=>x.CategoryId==5 && x.Status==1)
.GroupBy(q=>q.VersionId)
.OrderByDescending(q=>q.Key)
.Take(100)  
.Select(q => new { VersionId = q.Key, MajorVersion = q.Max(x => x.MajorVersion) })

此刻,它看起来像下面。但我想将MajorVersion字段重新排序为降序......

VersionId     MajorVersion
387276        2
365015        1
355427        3
369865        1

我该怎么做?

2 个答案:

答案 0 :(得分:2)

选择返回IEnumerable,以便您可以在之后进行进一步的排序/排序等。

Contents
.Where(x => x.CategoryId == 5 && x.Status == 1)
.GroupBy(q => q.VersionId)
.OrderByDescending(q => q.Key)
.Take(100)  
.Select(q => new { VersionId = q.Key, MajorVersion = q.Max(x => x.MajorVersion) })
.OrderByDescending(x => x.MajorVersion);

答案 1 :(得分:1)

只需在OrderByDescending之后移动Select 然后,您可以按选择中的字段进行排序。 (因为你将在OrderByDescending返回的匿名类型的IQueryable上调用Select()