private PackageSearchResponse MergeResults(IEnumerable<SimpleSearchMetadata>[] results, IEnumerable<SourceRepository> repos) { var comparer = new PackageIdentityComparer(); return new PackageSearchResponse() { Sources = repos.Select(repo => repo.PackageSource.Source), Packages = results .SelectMany(metadata => metadata) .GroupBy(metadata => metadata.Identity.Id) .Select(metadataGroup => metadataGroup.OrderByDescending(metadata => metadata.Identity, comparer).First()) .OrderBy(metadata => metadata.Identity.Id) .Select(metadata => new PackageSearchItem() { Id = metadata.Identity.Id, Version = metadata.Identity.Version.ToNormalizedString(), HasVersion = metadata.Identity.HasVersion, Description = metadata.Description }) }; }
/// <summary> /// True if the identity objects are equal based on the given comparison mode. /// </summary> public virtual bool Equals(PackageIdentity other, VersionComparison versionComparison) { var comparer = new PackageIdentityComparer(versionComparison); return(comparer.Equals(this, other)); }