博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
泛型去重复项
阅读量:5310 次
发布时间:2019-06-14

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

转载:    

ID Name

1  张三
1  李三
1  小伟
1  李三 
2  李四
2  李武

------------------------------------------------------------------------------------------------------------

解决这个问题,方法很多,最开始想到的就Enumerable.Distinct方法

我们可能经常用的是

这里要用使用指定的 IEqualityComparer<T> 对值进行比较

 

 一、先为数据做个实体类:User

 

  1. public class User  
  2. {  
  3.      public User(int id, string name)  
  4.      {  
  5.          Id = id;  
  6.          Name = name;  
  7.      }  
  8.   
  9.      public int Id { getset; }  
  10.   
  11.      public string Name { getset; }  
  12.  }  

 

二、再自定义一个User比较类(实现IEqualityComparer<T>接口):UserComparer

 

 

  1. public class UserComparer : IEqualityComparer<User>  
  2. {  
  3.     #region IEqualityComparer<User> 成员   
  4.     public bool Equals(User x, User y)  
  5.     {  
  6.         if (x.Id == y.Id && x.Name == y.Name)         
  7.             return true;           
  8.         else             
  9.             return false;             
  10.     }  
  11.   
  12.     public int GetHashCode(User obj)  
  13.     {  
  14.         return 0;  
  15.     }  
  16.     #endregion   
  17. }  

 

三、最后是去重复测式类:

 

 

    1.  public class MainClass  
    2.  {  
    3.     public static void Main()  
    4.     {  
    5.         List<User> list = new List<User>();  
    6.         list.Add(new User(1, "张三"));  
    7.         list.Add(new User(1, "李三"));  
    8.         list.Add(new User(1, "小伟"));  
    9.         list.Add(new User(1, "李三"));  
    10.         list.Add(new User(2, "李四"));  
    11.         list.Add(new User(2, "李武"));  
    12.   
    13.         var query = list.Distinct(new UserComparer());  
    14.   
    15.         foreach (var item in query)  
    16.         {  
    17.             Console.WriteLine(item.Id + "," + item.Name);  
    18.         }  
    19.   
    20.         Console.ReadLine();  
    21.         //输出结果:  
    22.         // 1 , 张三  
    23.         // 1 , 李三  
    24.         // 1 , 小伟                  
    25.         // 2 , 李四  
    26.         // 2 , 李武  
    27.     }  
    28. }  

转载于:https://www.cnblogs.com/bfy-19/archive/2012/08/01/2618860.html

你可能感兴趣的文章
Android 创建与解析XML(四)—— Pull方式
查看>>
CodeForces 411B 手速题
查看>>
同比和环比
查看>>
SpringMvc拦截器运行原理。
查看>>
MySQL基础3
查看>>
云计算数据与信息安全防护
查看>>
全局设置导航栏
查看>>
RxJS & Angular
查看>>
面向对象(多异常的声明与处理)
查看>>
MTK笔记
查看>>
ERROR: duplicate key value violates unique constraint "xxx"
查看>>
激活office 365 的启动文件
查看>>
9款免费的Windows远程协助软件
查看>>
Maven(八) Maven项目和testng结合应用
查看>>
iOS 的 set.get.构造方法
查看>>
无法根据中文查找
查看>>
文件编码,文件或文件名编码格式转换(转)
查看>>
[简讯]phpMyAdmin项目已迁移至GitHub
查看>>
redis的hash与string区别
查看>>
转载 python多重继承C3算法
查看>>