工具-使用distinct方法去重对象List
有个对象ApplicationUser,结构如下:
public class ApplicationUser { public Guid SubjectId { get; set; } public string Username { get; set; } }
现在代码里面有个List<ApplicationUser> users,需要对它进行去重,去重的原理是只要subjectId相同,就认为是相同的一个对象
使用IEqualityComparer<T>实现一个比较器:
public class ApplicationUserComparer : IEqualityComparer<ApplicationUser> { public bool Equals(ApplicationUser x, ApplicationUser y) { if (x == null || y == null) return false; if (x.SubjectId == y.SubjectId) return true; else return false; } public int GetHashCode(ApplicationUser obj) { if (obj == null) return 0; else return obj.SubjectId.GetHashCode(); } }
然后使用users.Distinct(new ApplicationUserComparer());调用即可
ps:从网上看这种方式的性能比较高,如果考虑性能影响可以使用这种方法;如果数据量比较少,不考虑性能方面,直接foreach去去重即可