博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
List中的元素 去重
阅读量:5290 次
发布时间:2019-06-14

本文共 3298 字,大约阅读时间需要 10 分钟。

三种去重的方法

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

2、使用表达式

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

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

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

 

 

  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. }  
 
using System;using System.Collections.Generic;using System.Linq;namespace NonDuplicateList{    class Program    {        static void Main(string[] args)        {            List
users = new List
(); users.Add(new User("张三", "永丰路299号")); users.Add(new User("张三", "上地西路8号"));//重复项,去重后将删掉 users.Add(new User("李四", "海鹰路甲一号")); List
nonDuplicateList1 = users.Distinct().ToList();//通过User类的Equals实现去重 List
nonDuplicateList2 = users.Where((x,i)=>users.FindIndex(z=>z.name == x.name) == i).ToList();//Lambda表达式去重 List
nonDuplicateList3 = new List
();//通过循环方式去重 foreach(User user in users) { if(nonDuplicateList3.Exists(x=>x.name==user.name) == false) { nonDuplicateList3.Add(user); } } foreach(List
list in new Object[]{nonDuplicateList1,nonDuplicateList2,nonDuplicateList3})//打印出三个List的元素 { Console.Write("nonDuplicateList:\r\n"); foreach(User u in list) { Console.WriteLine("\t" + u.ToString()); } } Console.Read(); } } class User:IEquatable
//继承IEquatable接口,实现Equals方法。List就可以使用Distinct去重 { public string name { get; set; } string address; public User(string _name, string _address) { name = _name; address = _address; } public override string ToString() { return string.Format("name:{0},\taddress:{1}", name, address); } public bool Equals(User other) { return this.name == other.name; } public override int GetHashCode() { return name.GetHashCode(); } }}

posted on
2017-04-12 16:59 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/wf_1000/p/6700126.html

你可能感兴趣的文章
《算法》C++代码 快速排序
查看>>
iframe的父子层跨域 用了百度的postMessage()方法
查看>>
Js apply方法与call方法详解 附ES6新写法
查看>>
linux php全能环境一键安装,小白福利!
查看>>
Note(2): 一个JavaScript的贷款计算器
查看>>
js原型和原型链
查看>>
AJAX需要注意的
查看>>
ubuntu下中文乱码解决方案
查看>>
ES6 随记(3.4.1)-- 函数的拓展(参数默认值,扩展运算符)
查看>>
MSSQL 分组后取每组第一条(group by order by)
查看>>
图片生成缩略图
查看>>
SpecFlow特性介绍2-Context
查看>>
单独编译kvm模块
查看>>
基于SQL调用Com组件来发送邮件
查看>>
关于Mysql select语句中拼接字符串的记录
查看>>
动态规划 例子与复杂度
查看>>
安装webpack-dev-server后,npm run dev报错
查看>>
[BZOJ4567][SCOI2016]背单词(Trie+贪心)
查看>>
15软工课后作业01—15100120
查看>>
git回退到某个版本并提交
查看>>