首页 > Windows开发 > 详细

C# Distinct去重泛型List

时间:2019-11-19 11:53:50      阅读:405      评论:0      收藏:0      [点我收藏+]
  • List<int>去重
  • List<string>去重
  • List<T>去重

1. 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);
 }

技术分享图片

2. 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);
 }

技术分享图片

3. 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);
 }

技术分享图片

C# Distinct去重泛型List

原文:https://www.cnblogs.com/LuckyZLi/p/11888239.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!