using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Yi.Framework.Common.Helper { public class Compare : IEqualityComparer { private Func _getField; public Compare(Func getfield) { this._getField = getfield; } public bool Equals(T x, T y) { return EqualityComparer.Default.Equals(_getField(x), _getField(y)); } public int GetHashCode(T obj) { return EqualityComparer.Default.GetHashCode(this._getField(obj)); } } public static class DistinctHelper { /// /// 自定义Distinct扩展方法 /// /// 要去重的对象类 /// 自定义去重的字段类型 /// 要去重的对象 /// 获取自定义去重字段的委托 /// public static IEnumerable DistinctNew(this IEnumerable source, Func getfield) { return source.Distinct(new Compare(getfield)); } } }