using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Yi.Framework.Infrastructure.Helper { public class Compare : IEqualityComparer { private Func _getField; public Compare(Func getfield) { _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(_getField(obj)!); } } public static class DistinctHelper { /// /// 自定义Distinct扩展方法 /// /// 要去重的对象类 /// 自定义去重的字段类型 /// 要去重的对象 /// 获取自定义去重字段的委托 /// public static IEnumerable DistinctNew(this IEnumerable source, Func getfield) { return source.Distinct(new Compare(getfield)); } } }