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

} 

は、私が「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

ジャスト・グループは、その後のバージョンに各グループを注文すると、最後の1を取ります。

var results = list.GroupBy(x => x.SoftName) 
    .Select(g => g.OrderBy(x => x.Version).Last()); 
関連する問題