zoukankan      html  css  js  c++  java
  • 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. }  

  • 相关阅读:
    VC 常见问题百问
    python windows 环境变量
    Check server headers and verify HTTP Status Codes
    Where are the AES 256bit cipher suites? Please someone help
    outlook 如何预订会议和会议室
    安装Axis2的eclipse插件后,未出现界面
    windows 环境变量
    python 时间日期处理汇集
    openldap学习笔记(使用openldap2.3.32)
    set p4 environment in windows
  • 原文地址:https://www.cnblogs.com/quangeshishen/p/8688621.html
Copyright © 2011-2022 走看看