C# List去重的三种方法

 1 class Program  
 2     {  
 3         static void Main(string[] args)  
 4         {  
 5             List<User> users = new List<User>();  
 6             users.Add(new User("张三", "啊啊啊"));  
 7             users.Add(new User("张三", "哈哈哈哈哈哈"));//重复项,去重后将删掉  
 8             users.Add(new User("李四", "忐忐忑忑通天塔"));  
 9   
10             List<User>  List1 = users.Distinct().ToList();//通过User类的Equals实现去重  
11             List<User>  List2 = users.Where((x,i)=>users.FindIndex(z=>z.name == x.name) == i).ToList();//Lambda表达式去重  
12             List<User>  List3 = new List<User>();//通过循环方式去重  
13             foreach(User user in users)  
14             {  
15                 if( List3.Exists(x=>x.name==user.name) == false)  
16                 {  
17                      List3.Add(user);  
18                 }  
19             }  
20   
21             foreach(List<User> list in new Object[]{ List1, List2, List3})//打印出三个List的元素  
22             {  
23                 Console.Write(" List:\r\n");  
24                 foreach(User u in list)  
25                 {  
26                     Console.WriteLine("\t" + u.ToString());  
27                 }  
28             }  
29             Console.Read();  
30         }  
31     }  
32   
33     class User:IEquatable<User>//继承IEquatable接口,实现Equals方法。List就可以使用Distinct去重  
34     {  
35         public string name { get; set; }  
36         string address;  
37   
38         public User(string _name, string _address)  
39         {  
40             name = _name;  
41             address = _address;  
42         }  
43   
44         public override string ToString()  
45         {  
46             return string.Format("name:{0},\taddress:{1}", name, address);  
47         }  
48   
49         public bool Equals(User other)  
50         {  
51             return this.name == other.name;  
52         }  
53         public override int GetHashCode()  
54         {  
55             return name.GetHashCode();  
56         }  
57     }  

 

转载于:https://www.cnblogs.com/LY-HeroesRebor/p/8758284.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值