2016-07-06 117 views
0

我知道我可以在LINQ查询之外做到这一点,但我想知道是否可以在一个LINQ查询中这样做。LINQ Group by排序

我想提交一个查询,我正在检索与它关联的唯一ID的最新项目。

说我有以下对象:

{ 
    ItemDescription: 'Object 1', 
    ItemDate: 1/1/2016, 
    ItemTypeId: 1 
}, 
{ 
    ItemDescription: 'Object 2', 
    ItemDate: 1/1/2016, 
    ItemTypeId: 2 
}, 
{ 
    ItemDescription: 'Object 3', 
    ItemDate: 3/1/2016, 
    ItemTypeId: 1 
}, 

我想查询返回的对象2和3(因为3的ItemTypeId=1较新版本

应该(我认为)是类似以下内容:

var recentItems = (from s in db 
        orderby s.ItemDate descending 
        group s by s.ItemTypeId into uniqueItems 
        select uniqueItems.FirstOrDefault()).ToList(); 

然而,FirstOrDefault覆盖排序

有什么想法?

回答

2

这应该工作:

var recentItems = (from s in db 
        group s by s.ItemTypeId into uniqueItems 
        select uniqueItems.OrderByDescending(x=> x.ItemDate).FirstOrDefault()) 
                     .ToList(); 
+0

噢,男孩做我喜欢这个地方。完善!谢谢! – twsmale