2017-02-01 63 views
1

使用lambda我有一个集合,我需要用Linq日期降序(DateProcessed场)来订购吧,首先我用两个可能的密钥分组:BookedEmpty。但它没有被订购的数据..的GroupBy,OrderByDescending Linq中

这是我的表达:

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

我很困惑,因为我是第一个分组,我知道分组集合后两(BookedEmpty被分裂),所以我不知道如何处理排序,因为我第一次分组

回答

1

如果您要查询内存中的集合,然后只需将顺序分组之前:

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

每组内的项目将按DateProcessed排序。

0

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

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

PS:代码可能已经没有测试过的语法问题,但这个想法应该是创造的关键withing每组因此我们可以通过

订购