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

posted @ 2021-06-01 16:13  DarryRing  阅读(206)  评论(0编辑  收藏  举报