Source/NuGetGallery.Operations/PackageComparer.cs (27 lines of code) (raw):

using System; using System.Collections.Generic; namespace NuGetGallery.Operations { public class PackageComparer : IEqualityComparer<Package> { public bool Equals( Package firstPackage, Package secondPackage) { return firstPackage.Id.Equals(secondPackage.Id, StringComparison.OrdinalIgnoreCase) && firstPackage.Version.Equals(secondPackage.Version, StringComparison.OrdinalIgnoreCase) && firstPackage.Hash.Equals(secondPackage.Hash, StringComparison.OrdinalIgnoreCase); } public int GetHashCode(Package package) { unchecked { var hash = 17; hash = hash * 23 + package.Id.GetHashCode(); hash = hash * 23 + package.Version.GetHashCode(); hash = hash * 23 + package.Hash.GetHashCode(); return hash; } } } }