C# Distinct去重泛型List

2021/7/16 11:14:34

本文主要是介绍C# Distinct去重泛型List,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

  • List<int>去重
  • List<string>去重
  • List<T>去重

 

1、List<int>去重

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

 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("比较值为空");
            if (lambdaHash == null)
                throw new ArgumentNullException("数组的Hash值为空");
            _lambdaComparer = lambdaComparer;
            _lambdaHash = lambdaHash;
        }
        public bool Equals(T x, T y)
        {
            return _lambdaComparer(x, y);
        }

        public int GetHashCode(T obj)
        {
            return _lambdaHash(obj);
        }
    }


 static void Main(string[] args)
        {
            List<User> list = new List<User>()
 {
    new User() { Id = 1, Name = "张三" } ,
     new User() { Id = 1, Name = "王五" } ,
    new User() { Id = 1, Name = "张三" } ,
    new User() { Id = 3, Name = "李四" } ,
 };
            list = list.Distinct(new LambdaComparer<User>((a, b) => a.Name == b.Name, obj => obj.ToString().GetHashCode())).ToList();
            foreach (var item in list)
            {
                Console.WriteLine("Id:" + item.Id + ", Name:" + item.Name);
            }
            Console.ReadLine();
        }

 


 

 

 



这篇关于C# Distinct去重泛型List的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程