zoukankan      html  css  js  c++  java
  • C# List去重的三种方法

    三种去重的方法

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

    2、使用表达式

    [csharp] view plain copy
     
    1. 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: ");  
    30.                 foreach(User u in list)  
    31.                 {  
    32.                     Console.WriteLine(" " + 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}, address:{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. }  

  • 相关阅读:
    JAVA课程作业01
    《大道至简》第二章读后感
    《大道至简》第一章读后感
    制作Linux镜像,将腾讯云服务器系统制成镜像
    postman数据驱动
    Navicat Premium 连接Oracle数据库报错 instant Client LIght : unsupported server charcter ser ZHS16GBK
    查看python位数
    AutoItLibrary安装过程中遇到的坑
    hyrobot使用
    有这样一道智力题:“某商店规定:三个空汽水瓶
  • 原文地址:https://www.cnblogs.com/simadi/p/8393506.html
Copyright © 2011-2022 走看看