zoukankan      html  css  js  c++  java
  • 工具-使用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去去重即可

  • 相关阅读:
    AGC015E Mr.Aoki Incubator
    luogu P3520 [POI2011]SMI-Garbage
    442.Find All Duplicates in an Array
    SICP_2.61-2.62
    sicp_2.59-2.60
    SICP_2.58
    SICP_2.56-2.57
    SICP_2.53-2.55
    SICP_2.52-2.53
    SICP_2.50-2.51
  • 原文地址:https://www.cnblogs.com/walt/p/14837699.html
Copyright © 2011-2022 走看看