zoukankan      html  css  js  c++  java
  • C# Distinct去重泛型List

    List<int>去重

     List<int> ilist = new List<int>() { 1, 2, 3, 4, 2, 3 };
     ilist = ilist.Distinct().ToList();
     foreach (var item in ilist)
     {
        Console.WriteLine(item);
     }

    List<string>去重

    List<string> strList = new List<string>() { "4", "4", "5", "6", "6" };
     strList = strList.Distinct().ToList();
     foreach (var item in strList)
     {
        Console.WriteLine(item);
     }

    List<T>去重

    public class User
     {
       public int Id { get; set; }
       public string Name { get; set; }
     }
    
    //去重类
     public class LambdaComparer<T> : IEqualityComparer<T>
     {
       private readonly Func<T, T, bool> _lambdaComparer;
       private readonly Func<T, int> _lambdaHash;
       public LambdaComparer(Func<T, T, bool> lambdaComparer)
       : this(lambdaComparer, EqualityComparer<T>.Default.GetHashCode)
       {
       }
       public LambdaComparer(Func<T, T, bool> lambdaComparer, Func<T, int> lambdaHash)
       {
          if (lambdaComparer == null)
             throw new ArgumentNullException("lambdaComparer");
          if (lambdaHash == null)
             throw new ArgumentNullException("lambdaHash");
           _lambdaComparer = lambdaComparer;
           _lambdaHash = lambdaHash;
       }
    
       public bool Equals(T x, T y)
       {
          return _lambdaComparer(x, y);
       }
    
       public int GetHashCode(T obj)
       {
          return _lambdaHash(obj);
       }
     }
    
    //Main方法
     List<User> list = new List<User>() 
     { 
        new User() { Id = 1, Name = "张三" } ,
        new User() { Id = 1, Name = "张三" } ,
        new User() { Id = 3, Name = "李四" } ,
     };
     list = list.Distinct(new LambdaComparer<User>((a, b) => a.Id == b.Id && a.Name == b.Name, obj => obj.ToString().GetHashCode())).ToList();
     foreach (var item in list)
     {
        Console.WriteLine("Id:" + item.Id + ", Name:" + item.Name);
     }
  • 相关阅读:
    centos安装python
    【剑指Offer学习】【所有面试题汇总】
    内连接,外链接(左连接、右连接、全连接),交叉连接
    数据库三范式
    聚集索引与非聚集索引
    B树和B+树的区别
    TCP建立连接三次握手和释放连接四次握手
    HTTP协议详解
    常见的HTTP状态码(HTTP Status Code)说明
    归并排序的思想及递归运行步骤详解
  • 原文地址:https://www.cnblogs.com/hofmann/p/15061963.html
Copyright © 2011-2022 走看看