List<object>进行Distinct()去重

简介: 原文:List进行Distinct()去重有时我们会对一个list集合里的数据进行去重,C#提供了一个Distinct()方法直接可以点得出来。如果list中的T是个自定义对象时直接对集合Distinct是达不到去重的效果。
原文: List<object>进行Distinct()去重

有时我们会对一个list<T>集合里的数据进行去重,C#提供了一个Distinct()方法直接可以点得出来。如果list<T>中的T是个自定义对象时直接对集合Distinct是达不到去重的效果。我们需要新定义一个去重的类并继承IEqualityComparer接口重写Equals和GetHashCode方法,如下Demo

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 
 5 namespace MyTestCode
 6 {
 7     /// <summary>
 8     /// Description of DistinctDemo.
 9     /// </summary>
10     public class DistinctDemo
11     {
12         private static List<Student> list;
13         public DistinctDemo()
14         {
15         }
16         
17         public static void init()
18         {
19             list = new List<Student>{
20                 new Student{
21                     Id=1,
22                     Name="xiaoming",
23                     Age=22
24                 },
25                 new Student{
26                     Id=2,
27                     Name="xiaohong",
28                     Age=23
29                 },
30                 new Student{
31                     Id=2,
32                     Name="xiaohong",
33                     Age=23
34                 },
35             };
36         }
37         
38         public void Display()
39         {
40             list = list.Distinct(new ListDistinct()).ToList();
41             foreach (var element in list) {
42                 Console.WriteLine(element.Id +"/"+element.Name+"/"+element.Age);
43             }
44         }
45         
46     }
47     
48     public class Student
49     {
50         public int Id{get;set;}
51         public string Name{get;set;}
52         public int Age{get;set;}
53     }
54     
55     public class ListDistinct : IEqualityComparer<Student>
56     {
57         public bool Equals(Student s1,Student s2)
58         {
59             return (s1.Name == s2.Name);
60         }
61         
62         public int GetHashCode(Student s)
63         {
64             return s==null?0:s.ToString().GetHashCode();
65         }
66     }
67 }

 

目录
相关文章
|
7月前
|
开发框架 .NET
list 去重
list 去重
|
23天前
|
Java
Java使用List去重的四中方式
Java使用List去重的四中方式
17 6
|
3月前
|
Java 数据库连接 mybatis
mybatis返回结果为List<Map<String, Object>>的写法
mybatis返回结果为List<Map<String, Object>>的写法
|
4月前
|
Java
JDK8 Stream之如何给List属性去重?
JDK8 Stream之如何给List属性去重?
54 0
|
5月前
|
容器
List特点和遍历方式及增长因子论证和去重原理和LinkedList特点
List特点和遍历方式及增长因子论证和去重原理和LinkedList特点
27 0
|
6月前
|
Java
【Java用法】java 8两个List集合取交集、并集、差集、去重并集
【Java用法】java 8两个List集合取交集、并集、差集、去重并集
180 0
|
7月前
|
Java
Java List集合去重的多种方法
Java List集合去重的多种方法
69 0
|
7月前
|
存储 Java 程序员
Java集合List介绍和去重方案
Java集合List介绍和去重方案
70 0
|
8月前
|
Java
java8 List根据对象中属性去重-多属性去重-去除重复字符串
java8 List根据对象中属性去重-多属性去重-去除重复字符串
641 0
|
9月前
|
数据库
List中对象去重和List 根据对象的属性去重
有这么一个需求,需要将从数据库查出来的数据进行去重。
51 0