List<object>进行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 }

 

时间: 2024-10-07 22:41:23

List<object>进行Distinct()去重的相关文章

mongodb中使用distinct去重的简单方法_MongoDB

MongoDB的destinct命令是获取特定字段中不同值列表.该命令适用于普通字段,数组字段和数组内嵌文档. mongodb的distinct的语句: 复制代码 代码如下: db.users.distinct('last_name') 等同于 SQL 语句: 复制代码 代码如下: select DISTINCT last_name from users 表示的是根据指定的字段返回不同的记录集. 一个简单的实例: // > db.addresses.insert({"zip-code&qu

count去重和distinct去重

有两种去重方法:1.select count(distinct id) from a;这个是将所有值都放入到内存中,key为列值,通过hash算出有多少个key就是多少行.2.select count(1) from (select 1 from a group by id ) a,这个是通过group by先将id进行排序,之后只要进行计数就可以了.时间复杂度为nlogn,空间复杂度为1.空间复杂度小. 两种方法优缺点比较:如果内存够容纳所有行数,第一种优于第二种当如果内存不够的话,第二种优于

【大数据技巧】MaxCompute优化去重计算的性能

免费开通大数据服务:https://www.aliyun.com/product/odps 转载自dachuan 随着双十一数据量的暴增,之前用distinct去重可以简单处理的场景,现在消耗的时间成倍增长.如果用了multiple distinct,那就更要警惕,因为多重去重本身会带来数据量的成倍增长,很可能10分钟的任务,在双十一期间会跑上几个小时都没有结果. 这里介绍一个小技巧,其实在稳定性手册里面已经有过介绍,不过总感觉没有看懂.最近正好做了一次优化,于是在这里小结一下: 例如原来的代码

biji

1.强类型语言 弱类型语言 强类型语言:定义对象或变量时,需要指定其归属类型 一旦一个变量类型确定,它所归属的类型不可再变 弱类型语言:定义变量时不用指定变量类型 在程序运行中,可以改变变量的的归属类型 scala变量定义: var str = "abcd" java: String str = "abcd" 这样写法不是没有指定str的类型,而是没有显式的指定str的类型,它隐式的从变量值中自动判断 显式写法: var str:String = "abc

oracle中变长数组varray,嵌套表,集合使用方法_oracle

创建变长数组类型 CREATE TYPE varray_type AS VARRAY(2) OF VARCHAR2(50); 这个变长数组最多可以容纳两个数据,数据的类型为 varchar2(50) 更改元素类型的大小或精度 可以更改变长数组类型和嵌套表类型 元素的大小. ALTER TYPE varray_type MODIFY ELEMENT TYPE varchar2(100) CASCADE; CASCADE选项吧更改传播到数据库中的以来对象.也可以用 INVALIDATE 选项使依赖对

关于shared pool的深入探讨(五)

关于shared pool的深入探讨(五) 原文链接: http://www.eygle.com/internal/shared_pool-5.htm Oracle使用两种数据结构来进行shared pool的并发控制:lock 和 pin.Lock比pin具有更高的级别. Lock在handle上获得,在pin一个对象之前,必须首先获得该handle的锁定.锁定主要有三种模式: Null,share,Exclusive.在读取访问对象时,通常需要获取Null(空)模式以及share(共享)模式

Oracle数据库中去除重复数据

  在平时的开发中,我们经常遇到数据表中出现重复的数据,那么该如何解决呢?这里介绍两种情况下的数据去重方法,一.完全重复数据去重;二.部分字段数据重复去重. 一.完全重复数据去重方法 对于表中完全重复数据去重,可以采用以下SQL语句. Code CREATETABLE"#temp"AS (SELECTDISTINCT * FROM 表名);--创建临时表,并把DISTINCT 去重后的数据插入到临时表中 truncateTABLE 表名;--清空原表数据 INSERTINTO 表名(S

RDD api整理

RDD[T] Transformations rdd api 备注 persist/cache map(f: T => U) keyBy(f: T => K) 特殊的map,提key flatMap(f: T => Iterable[U]) map的一种,类似UDTF filter(f: T => Boolean) map的一种 distinct(numPartitions) rdd的实现为 map(x => (x, null)).reduceByKey((x, y) =&g

Impala查询功能测试

关于 Impala 使用方法的一些测试,包括加载数据.查看数据库.聚合关联查询.子查询等等. 1. 准备测试数据 以下测试以 impala 用户来运行: $ su - impala -bash-4.1$ whoami impala $ hdfs dfs -ls /user Found 5 items drwxr-xr-x - hdfs hadoop 0 2014-09-22 18:36 /user/hdfs drwxrwxrwt - mapred hadoop 0 2014-07-23 21:3