#if !NET_4_6 using System.Collections.Generic; namespace LinqInternal.Collections { internal class KeyValuePairEqualityComparer : IEqualityComparer> { private readonly IEqualityComparer _keyComparer; private readonly IEqualityComparer _valueComparer; public KeyValuePairEqualityComparer(IEqualityComparer keyComparer, IEqualityComparer valueComparer) { _keyComparer = keyComparer ?? EqualityComparer.Default; _valueComparer = valueComparer ?? EqualityComparer.Default; } public bool Equals(KeyValuePair x, KeyValuePair y) { return _keyComparer.Equals(x.Key, y.Key) && _valueComparer.Equals(x.Value, y.Value); } public int GetHashCode(KeyValuePair obj) { return (_keyComparer.GetHashCode(obj.Key) * 13) + _valueComparer.GetHashCode(obj.Value); } } } #endif