工具-使用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去去重即可

浙公网安备 33010602011771号