/* 作者: 季健国 * 创建时间: 2012/8/1 21:47:05 * */ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Ant.Service.Common { public class CommonEqualityComparer : IEqualityComparer { private Func keySelector; private IEqualityComparer comparer; public CommonEqualityComparer(Func keySelector, IEqualityComparer comparer) { this.comparer = comparer; } public CommonEqualityComparer(Func keySelector) : this(keySelector, EqualityComparer.Default) { } public bool Equals(T x, T y) { return comparer.Equals(keySelector(x), keySelector(y)); } public int GetHashCode(T obj) { return comparer.GetHashCode(keySelector(obj)); } } /// /// 比较器 /// public static class DistinctExtensions { public static IEnumerable Distinct(this IEnumerable source, Func keySelector) { return source.Distinct(new CommonEqualityComparer(keySelector)); } public static IEnumerable Distinct(this IEnumerable source, Func keySelector, IEqualityComparer comparer) { return source.Distinct(new CommonEqualityComparer(keySelector, comparer)); } } }