2016-01-29 97 views
0
public class Foo 
{ 
    public string Name {get; set;} 
    public int Year {get; set;} 
} 

說我有一個Foo物品清單。 某些Foo項目可能具有相同的名稱。在這種情況下,我想過濾除最近使用該名稱的Foo項目以外的所有項目。 (A Foo項目不能與同一年同一名稱)當物品具有相同的名稱時,過濾掉最舊的物品

有沒有辦法用單個LINQ語句來做到這一點?

回答

5

您可以使用GroupBy

var result = items.GroupBy(foo => foo.Name) 
        .Select(g => g.OrderByDescending(foo => foo.Year).First()) 
        .ToList(); 
+0

@octavioccl - 非常感謝,但它幾乎是一樣的,你除了在你是最快的方式提供了更多的羅嗦解釋代碼,以便 - 再次感謝。 –

+0

不客氣:) – octavioccl