为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式,代码如下:

    public class DataComparer<T>:IEqualityComparer<T> where T:class{private Func<T, T, bool> _compareFunc;public DataComparer(Func<T,T,bool> compareFunc){this._compareFunc = compareFunc;}public bool Equals(T x, T y){return  this._compareFunc(x, y);}public int GetHashCode(T obj){return obj.ToString().GetHashCode();}}

调用如下:

dataTable.AsEnumerable().Distinct(new DataComparer<DataRow>((x, y) =>  return (x[1] == y[1] && x[2] ==y[2]))).CopyToDataTable();

在这里需要特别说明一下,GetHashCode方法重写时,需要使用:obj.ToString().GetHashCode(),而不能直接使用obj.GetHashCode(),原因如下(MSDN):

GetHashCode 方法可以由派生类型重写。 如果 GetHashCode 没有重写,引用类型的哈希代码通过调用基类的 Object.GetHashCode 方法计算,它基于对象的引用的哈希代码计算;有关更多信息,请参见 RuntimeHelpers.GetHashCode。 换言之,ReferenceEquals 方法返回 true 的两个对象具有相同的哈希代码。 如果值类型不重写 GetHashCode,基类的 ValueType.GetHashCode 方法使用反射计算基于类型字段的值的哈希代码。 换言之,字段有相同值的值类型有相等的哈希代码。

本文转自 梦在旅途 博客园博客,原文链接:

http://www.cnblogs.com/zuowj/p/4178347.html

,如需转载请自行联系原作者

为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式...相关推荐

  1. 摸鱼三天,我写了一个通用的组建树TreeUtil工具

    1. 树的简单遍历思路及写法 ①数据准备 Menu实体类 /*** @date: 2022/7/25* @FileName: Menu* @author: Yan* @Des:*/ @Data @Al ...

  2. php写一个轻量级的容器,PHP写的一个轻量级的DI容器类

    直接上代码吧. Di容器类: class Di implements \ArrayAccess{ private $_bindings = array();//服务列表 private $_insta ...

  3. PHP写的一个轻量级的DI容器类(转)

    理解什么是Di/IoC,依赖注入/控制反转.两者说的是一个东西,是当下流行的一种设计模式.大致的意思就是,准备一个盒子(容器),事先将项目中可能用到的类扔进去,在项目中直接从容器中拿,也就是避免了直接 ...

  4. 一个通用的VB磁盘文件搜索引擎类

    磁盘文件搜索是一件比较简单的事情,但很多代码写得非常繁琐,而且不支持多重路径和文件通配符,为此,我用VB写了一个通用的磁盘文件搜索引擎类,类代码如下: Option Explicit '* ***** ...

  5. 写一个通用数据访问组件

    出处:http://www.csharp-corner.com willsound(翻译) 我收到过好多Email来问我如何用一个通用的数据提供者(data provider)在不失自然数据提供者(n ...

  6. java 通用组件_写一个通用数据访问组件

    出处:http://www.csharp-corner.comwillsound(翻译)我收到过数据库 出处:http://www.csharp-corner.com willsound(翻译) 我收 ...

  7. 用面向对象写一个通用爬虫模板

    面向对象的爬虫模板 前言 初衷 实现 先来一个最简单的爬虫类 给简单的类加点参数 重试的方法 异常处理 加上保存数据,完整的单线程爬虫 提速爬取 总结 前言 本文内容及代码仅供交流学习使用,如有不足之 ...

  8. html导航栏重叠怎么办,请问前端大神,html如何引入另一个html,写了一个导航栏想在多个页面中如何重复使用?...

    写了一个头部导航栏的html 想在多个html页面中引用,请问怎么操作? 网上找了用标签 实际效果并不好 , 导航栏中按钮下拉菜单无法完全显示 请问大牛们平时开发中怎么处理这个的 如图 : 可以使用 ...

  9. 有一个小白程序员,写了一个只能对5个数字进行排序的函数,现在有25个不重复的数字,

    题目:有一个小白程序员,写了一个只能对5个数字进行排序的函数,现在有25个不重复的数字,请问小白同学最少调用几次该函数,可以找出其中最大的三个数? A.5 B.6 C.7 D.8 答案:C 解析:第一 ...

最新文章

  1. boot定时任务开启和关闭 spring_SpringBoot中的定时任务的同步与异步你确定真的知道?...
  2. 深度学习中的3个秘密:集成、知识蒸馏和蒸馏
  3. 亿级规模的Feed流推荐系统,如何轻松设计?
  4. Ubuntu 12.04下jdk的安装与配置
  5. Qt编写输入法终极版V2018
  6. Bootstrap 按钮(实例 )
  7. android 半透明背景
  8. HTML页面浏览历史,浏览历史记录功能
  9. BZOJ-2037 Sue的小球 DP+费用提前
  10. 火车采集 PHP插件 post,火车采集器2010版PHP插件增加扩展的方法
  11. 计算机应用基础素材,计算机应用基础(Windows XP+Office 2003)、素材和习题答案-王向慧 计算机应用基础...
  12. 计算机基础知识(基础入门小白专属)九
  13. 快速原型设计工具(Axure)元件库导入
  14. --Redis入坑--RedisPipelineException:Pipeline contained one or more invalid commands;WRONGTYPE ...
  15. 【HCIE考试喜报】2022年11月11日考试通过
  16. Hotel MoMc蔓兰酒店融资6000万,松禾资本和第一资产共同投资
  17. 汇编语言使用宏,实现两个字节压缩BCD数相加
  18. 广告买量支付方式 cpa cpc cps cpt
  19. 数据结构与算法分析(第一周)
  20. TSC TTP-244 Pro打印机QT版本开发

热门文章

  1. 造车行业百年未有变局之下,一个「老玩家」开始了自己的赶超
  2. 从LeNet到EfficientNet:CNN的演变和特点总结
  3. 困扰人工智能50多年的常识问题,是否迎来“破局”?
  4. 2020 年了,深度学习接下来到底该怎么走?
  5. 爬取30亿人脸被600家执法机构使用,这家公司揭美国数据隐私老底
  6. 「NLP」ALBERT:更轻更快的NLP预训练模型
  7. 史上最强GAN被谷歌超越!标注数据少用90%,造假效果却更逼真
  8. 理解五个基本概念,让你更像机器学习专家
  9. 专访丨李开复:AI时代下努力工作未必能买车买房
  10. torch中tensor的普通索引以及index_select()