using System.Collections.Generic;
public static void Main()
var amounts = new List<Version>{
new Version{Major = 1, Minor = 31},
new Version{Major = 2, Minor = 38},
new Version{Major = 1, Minor = 32},
new Version{Major = 2, Minor = 37}
var results = amounts.GroupBy(x => x.Major).MaxBy(c => c.Key).MaxBy(c => c.Minor);
Console.WriteLine("Result " + results.Major + " " + results.Minor);
public static class Extensions
public static IEnumerable<TSource> MaxsBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource,TKey> keySelector)
return source.GroupBy(keySelector).MaxBy(g => g.Key);