Custom Comparer using mapped Hashing
using System; using System.Collections.Generic; [Serializable] public class ComparerEx<T> : IEqualityComparer<T> { private static Type _type; private static Mapping64BitToHash32Bit Hash; public bool Equals(T x, T y) { if (x == null || y == null) return false; if (_type == null) _type = x.GetType(); if (_type.IsArray) { var xb = x.GetBytesObject(_type); var yb = y.GetBytesObject(_type); return xb.Compare(yb); } return x.Equals(y); } public unsafe int GetHashCode(T obj) { if (_type == null) _type = obj.GetType(); if (Hash == null) Hash = new Mapping64BitToHash32Bit(); var objB = obj.GetBytesObject(_type); return Hash.ComputeHash(objB).ToInt(); } }