• C# List去重的三种方法


    转载至:https://blog.csdn.net/wangguanguo/article/details/46839793

    三种去重的方法

    1、List中的元素实现IEquatabe接口,并提供Equals方法和GetHashCode方法。

    2、使用表达式

    users.Where((x,i)=>users.FindIndex(z=>z.name == x.name) == i)  

    
    

    去重,这条语句返回结果只保留users这个List中重复的元素的第一个(name相等认为重复)。

    3、使用循环,判断每个元素是否重复

    [csharp] view plain copy
     
    1. using System;  
    2. using System.Collections.Generic;  
    3. using System.Linq;  
    4.   
    5. namespace NonDuplicateList  
    6. {  
    7.     class Program  
    8.     {  
    9.         static void Main(string[] args)  
    10.         {  
    11.             List<User> users = new List<User>();  
    12.             users.Add(new User("张三", "永丰路299号"));  
    13.             users.Add(new User("张三", "上地西路8号"));//重复项,去重后将删掉  
    14.             users.Add(new User("李四", "海鹰路甲一号"));  
    15.   
    16.             List<User> nonDuplicateList1 = users.Distinct().ToList();//通过User类的Equals实现去重  
    17.             List<User> nonDuplicateList2 = users.Where((x,i)=>users.FindIndex(z=>z.name == x.name) == i).ToList();//Lambda表达式去重  
    18.             List<User> nonDuplicateList3 = new List<User>();//通过循环方式去重  
    19.             foreach(User user in users)  
    20.             {  
    21.                 if(nonDuplicateList3.Exists(x=>x.name==user.name) == false)  
    22.                 {  
    23.                     nonDuplicateList3.Add(user);  
    24.                 }  
    25.             }  
    26.   
    27.             foreach(List<User> list in new Object[]{nonDuplicateList1,nonDuplicateList2,nonDuplicateList3})//打印出三个List的元素  
    28.             {  
    29.                 Console.Write("nonDuplicateList:\r\n");  
    30.                 foreach(User u in list)  
    31.                 {  
    32.                     Console.WriteLine("\t" + u.ToString());  
    33.                 }  
    34.             }  
    35.             Console.Read();  
    36.         }  
    37.     }  
    38.   
    39.     class User:IEquatable<User>//继承IEquatable接口,实现Equals方法。List就可以使用Distinct去重  
    40.     {  
    41.         public string name { get; set; }  
    42.         string address;  
    43.   
    44.         public User(string _name, string _address)  
    45.         {  
    46.             name = _name;  
    47.             address = _address;  
    48.         }  
    49.   
    50.         public override string ToString()  
    51.         {  
    52.             return string.Format("name:{0},\taddress:{1}", name, address);  
    53.         }  
    54.   
    55.         public bool Equals(User other)  
    56.         {  
    57.             return this.name == other.name;  
    58.         }  
    59.         public override int GetHashCode()  
    60.         {  
    61.             return name.GetHashCode();  
    62.         }  
    63.     }  
    64. }  

  • 相关阅读:
    ftp下载显示进度
    Java 类加载器(转)
    Java中的Enum的使用与分析
    Iterator的remove方法可保证从源集合中安全地删除对象(转)
    [置顶] 关于我
    Java实现 蓝桥杯 算法提高 周期字串
    Java实现 蓝桥杯 算法提高 学霸的迷宫
    Java实现 蓝桥杯 算法提高 上帝造题五分钟
    Java实现 蓝桥杯 算法提高 上帝造题五分钟
    Java实现 蓝桥杯 算法提高 周期字串
  • 原文地址:https://www.cnblogs.com/quangeshishen/p/8688621.html
Copyright © 2020-2023  润新知