2017-01-16 162 views
2
public class MySoft 
{ 
    public string SoftName { get; set; } 
    public int Version { get; set; } 
    public decimal Price { get; set; } 

} 

由於DATAS我有「MySoft」的名單(softname,版本,價格):獲得最大的價值

SoftA 1 25 
SoftB 1 35 
SoftB 2 12 
SoftB 3 24 
SoftA 2 14 

我希望得到保留名稱,價格和版本與最高版本。

結果應該是:

SoftA 2 14 
SoftB 3 24 

你有一個想法?

感謝,

回答

1

你也可以這樣做,

var result = softwares.GroupBy(item => item.SoftName) 
     .Select(grp => grp.Aggregate((max, cur) => 
          (max == null || cur.Version > max.Version) ? cur : max)); 

Fiddle

2

由僅舉組,然後訂單上的版本各組取最後一個。

var results = list.GroupBy(x => x.SoftName) 
    .Select(g => g.OrderBy(x => x.Version).Last());