public static PackageIdentity[] GetLatest(this PackageCollection packages, IVersionComparer versionComparer) { return(packages .GroupBy(p => p.Id, p => p.Version, StringComparer.OrdinalIgnoreCase) //max or default .Select(g => new PackageIdentity( g.Key, g.OrderByDescending(v => v, versionComparer) .FirstOrDefault())) .ToArray()); }