新建一個類,實現IEqualityComparer接口。注意GetHashCode方法的實現,只有HashCode相同才會去比較
public class Compare:IEqualityComparer<Student> { public bool Equals(Student x,Student y) { return x.Id == y.Id;//可以自定義去重規則,此處將Id相同的就作為重復記錄,不管學生的愛好是什么 } public int GetHashCode(Student obj) { return obj.Id.GetHashCode(); } }
調用:list.Distinct(new Compare()).ToList().ForEach(s => Console.WriteLine(s.ToString()));
列:
/// <summary> /// list對象去重 /// </summary> public class Compare : IEqualityComparer<HistoryStatisticsDTO> { /// <summary> /// /// </summary> /// <param name="x"></param> /// <param name="y"></param> /// <returns></returns> public bool Equals(HistoryStatisticsDTO x, HistoryStatisticsDTO y) { if (x == null || y == null) return false; if (x.CaseNumId == x.CaseNumId) { return true; } else { return false; } } /// <summary> /// /// </summary> /// <param name="obj"></param> /// <returns></returns> public int GetHashCode(HistoryStatisticsDTO obj) { if (obj == null) { return 0; } else { return obj.CaseNumId.GetHashCode(); } } }
調用: var list=historyStatistics.Distinct(new Compare()).ToList();