2017-01-16 153 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());