// Needed for NET35 (ConditionalWeakTable) #if !NET_4_6 using System; using System.Collections.Generic; using LinqInternal.Core; namespace LinqInternal.Collections.Specialized { [System.Diagnostics.DebuggerNonUserCode] internal class ConversionEqualityComparer : IEqualityComparer { private readonly IEqualityComparer _comparer; private readonly Func _converter; public ConversionEqualityComparer(IEqualityComparer comparer, Func converter) { _comparer = comparer ?? EqualityComparer.Default; if (converter == null) { throw new ArgumentNullException("converter"); } _converter = converter; } public bool Equals(TInput x, TInput y) { return _comparer.Equals(_converter.Invoke(x), _converter.Invoke(y)); } public int GetHashCode(TInput obj) { return _comparer.GetHashCode(_converter.Invoke(obj)); } } } #endif