我有一个集合,我需要使用DateProcessed
按降序日期(Linq
字段)对其进行排序,首先我按两个可能的键进行分组:Booked
或{{1} }。但数据没有被订购..
这是我的表达:
Empty
我很困惑,因为我首先进行分组,我知道分组后的分组会被分成两部分(IEnumerable<IGrouping<string, MyClassMongo>> sub = Model.MyCollection.GroupBy(f => f.IsBooked ? "Booked" : "Empty").OrderByDescending(f => f.FirstOrDefault().DateProcessed);
和Booked
)所以我不知道如何处理排序因为我是首先分组
答案 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:代码可能没有测试语法问题,但想法应该是创建每个组的密钥,以便我们可以通过
命令