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);
     }
  • 相关阅读:
    JAVA中final关键字的作用
    JAVA作用域和排序算法介绍
    JAVA的控制结构
    Java概述
    P6329 【模板】点分树 | 震波[点分树]
    BZOJ #4771. 七彩树 [主席树,链并,差分]
    CF1276F Asterisk Substrings [后缀自动机]
    P4173 残缺的字符串 [FFT]
    CF528D Fuzzy Search [FFT]
    #4589. Hard Nim [FWT]
  • 原文地址:https://www.cnblogs.com/hofmann/p/15061963.html
Copyright © 2011-2022 走看看