2016-07-06 111 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