internal class CustomerEqualityComparer<T> : IEqualityComparer<T>
{
public CustomerEqualityComparer(params Func<T, object>[] selectors)
{
Selectors = selectors;
}
private IEnumerable<Func<T, object>> Selectors { get; }
public bool Equals(T left, T right)
{
return !ReferenceEquals(left, null) && !ReferenceEquals(right, null) &&
Selectors.All(selector => selector(left).Equals(selector(right)));
}
public int GetHashCode(T obj)
{
unchecked
{
return Selectors.Select(selector => selector(obj).GetHashCode())
.Aggregate(17, (hashCode, subHashCode) => hashCode * 31 + subHashCode);
}
}
}
{
public CustomerEqualityComparer(params Func<T, object>[] selectors)
{
Selectors = selectors;
}
private IEnumerable<Func<T, object>> Selectors { get; }
public bool Equals(T left, T right)
{
return !ReferenceEquals(left, null) && !ReferenceEquals(right, null) &&
Selectors.All(selector => selector(left).Equals(selector(right)));
}
public int GetHashCode(T obj)
{
unchecked
{
return Selectors.Select(selector => selector(obj).GetHashCode())
.Aggregate(17, (hashCode, subHashCode) => hashCode * 31 + subHashCode);
}
}
}
本文介绍了一个内部类CustomerEqualityComparer<T>,该类实现了IEqualityComparer<T>接口,用于根据指定的选择器对泛型类型的对象进行相等性和哈希码的比较。选择器可以是一个或多个用于从对象中抽取属性的方法。
2154

被折叠的 条评论
为什么被折叠?



