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

 using System;
using System.Collections.Generic;
using System.Linq; namespace MyTestCode
{
/// <summary>
/// Description of DistinctDemo.
/// </summary>
public class DistinctDemo
{
private static List<Student> list;
public DistinctDemo()
{
} public static void init()
{
list = new List<Student>{
new Student{
Id=,
Name="xiaoming",
Age=
},
new Student{
Id=,
Name="xiaohong",
Age=
},
new Student{
Id=,
Name="xiaohong",
Age=
},
};
} public void Display()
{
list = list.Distinct(new ListDistinct()).ToList();
foreach (var element in list) {
Console.WriteLine(element.Id +"/"+element.Name+"/"+element.Age);
}
} } public class Student
{
public int Id{get;set;}
public string Name{get;set;}
public int Age{get;set;}
} public class ListDistinct : IEqualityComparer<Student>
{
public bool Equals(Student s1,Student s2)
{
return (s1.Name == s2.Name);
} public int GetHashCode(Student s)
{
return s==null?:s.ToString().GetHashCode();
}
}
}

最新文章

  1. 几个最常用的git命令
  2. uploadify firefox 401
  3. 深入JVM-垃圾回收概念与算法
  4. sdut 1592转置矩阵【稀疏矩阵的压缩存储】【快速转置算法】
  5. Spring3博客(内含ppt和代码的github地址)
  6. POJ 2986 A Triangle and a Circle 圆与三角形的公共面积
  7. php升级到5.4
  8. MySQL简单使用
  9. BZOJ 1010 [HNOI2008]玩具装箱toy
  10. Android-4
  11. Log4Net不生成日志文件
  12. HDU1316(求区间斐波那契数的个数)
  13. vue-router2 使用
  14. smtplib 报错501
  15. Angular.js学习范例及笔记
  16. hadoop namenode格式化问题汇总
  17. PHP artisan migrate 报错显示 could not find driver ,怎么办?
  18. xadmin系列之django的url分发的方式
  19. OLTP和OLAP有何区别?
  20. untiy 2d游戏平面直角坐标系的旋转应用

热门文章

  1. js给kindeditor添加值
  2. Spring与Redis的实现
  3. deep learning and machine learning
  4. org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer]
  5. sql 添加索引强大
  6. 【309】◀▶ Windows 相关功能实现
  7. C语言之单链表的使用
  8. 【LA 3989 训练指南】女士的选择 【稳定婚姻问题】
  9. javascript对变量和函数的声明提前‘hoist’
  10. 数据库版本控制工具:NeXtep Designer