GroupBy,在Linq中使用Lambda的OrderByDescending

时间:2017-02-01 22:58:39

标签: c# linq lambda

我有一个集合,我需要使用DateProcessed按降序日期(Linq字段)对其进行排序,首先我按两个可能的键进行分组:Booked或{{1} }。但数据没有被订购..

这是我的表达:

Empty

我很困惑,因为我首先进行分组,我知道分组后的分组会被分成两部分(IEnumerable<IGrouping<string, MyClassMongo>> sub = Model.MyCollection.GroupBy(f => f.IsBooked ? "Booked" : "Empty").OrderByDescending(f => f.FirstOrDefault().DateProcessed); Booked)所以我不知道如何处理排序因为我是首先分组

2 个答案:

答案 0 :(得分:1)

如果您正在查询内存中的集合,那么只需在分组之前下订单:

IEnumerable<IGrouping<string, MyClassMongo>> sub = 
    Model.MyCollection
         .OrderByDescending(f => f.DateProcessed)
         .GroupBy(f => f.IsBooked ? "Booked" : "Empty");

每个组中的项目将按DateProcessed排序。

答案 1 :(得分:0)

如果您想先分组,然后在组内对结果进行排序。你可以试试下面的东西

Model.MyCollection
    .GroupBy(f => f.IsBooked, 
             (f, g) => new{Key=f.DateProcessed, Group = g.OrderByDescending(c=>c.IsBooked)})
    .OrderByDescending(f => f.Key);

PS:代码可能没有测试语法问题,但想法应该是创建每个组的密钥,以便我们可以通过

命令