为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持Lamda表达式...
为了去重复,写了一个通用的比较容器类,可以用在需要比较的地方,且支持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表达式...相关推荐
- 摸鱼三天,我写了一个通用的组建树TreeUtil工具
1. 树的简单遍历思路及写法 ①数据准备 Menu实体类 /*** @date: 2022/7/25* @FileName: Menu* @author: Yan* @Des:*/ @Data @Al ...
- php写一个轻量级的容器,PHP写的一个轻量级的DI容器类
直接上代码吧. Di容器类: class Di implements \ArrayAccess{ private $_bindings = array();//服务列表 private $_insta ...
- PHP写的一个轻量级的DI容器类(转)
理解什么是Di/IoC,依赖注入/控制反转.两者说的是一个东西,是当下流行的一种设计模式.大致的意思就是,准备一个盒子(容器),事先将项目中可能用到的类扔进去,在项目中直接从容器中拿,也就是避免了直接 ...
- 一个通用的VB磁盘文件搜索引擎类
磁盘文件搜索是一件比较简单的事情,但很多代码写得非常繁琐,而且不支持多重路径和文件通配符,为此,我用VB写了一个通用的磁盘文件搜索引擎类,类代码如下: Option Explicit '* ***** ...
- 写一个通用数据访问组件
出处:http://www.csharp-corner.com willsound(翻译) 我收到过好多Email来问我如何用一个通用的数据提供者(data provider)在不失自然数据提供者(n ...
- java 通用组件_写一个通用数据访问组件
出处:http://www.csharp-corner.comwillsound(翻译)我收到过数据库 出处:http://www.csharp-corner.com willsound(翻译) 我收 ...
- 用面向对象写一个通用爬虫模板
面向对象的爬虫模板 前言 初衷 实现 先来一个最简单的爬虫类 给简单的类加点参数 重试的方法 异常处理 加上保存数据,完整的单线程爬虫 提速爬取 总结 前言 本文内容及代码仅供交流学习使用,如有不足之 ...
- html导航栏重叠怎么办,请问前端大神,html如何引入另一个html,写了一个导航栏想在多个页面中如何重复使用?...
写了一个头部导航栏的html 想在多个html页面中引用,请问怎么操作? 网上找了用标签 实际效果并不好 , 导航栏中按钮下拉菜单无法完全显示 请问大牛们平时开发中怎么处理这个的 如图 : 可以使用 ...
- 有一个小白程序员,写了一个只能对5个数字进行排序的函数,现在有25个不重复的数字,
题目:有一个小白程序员,写了一个只能对5个数字进行排序的函数,现在有25个不重复的数字,请问小白同学最少调用几次该函数,可以找出其中最大的三个数? A.5 B.6 C.7 D.8 答案:C 解析:第一 ...
最新文章
- boot定时任务开启和关闭 spring_SpringBoot中的定时任务的同步与异步你确定真的知道?...
- 深度学习中的3个秘密:集成、知识蒸馏和蒸馏
- 亿级规模的Feed流推荐系统,如何轻松设计?
- Ubuntu 12.04下jdk的安装与配置
- Qt编写输入法终极版V2018
- Bootstrap 按钮(实例 )
- android 半透明背景
- HTML页面浏览历史,浏览历史记录功能
- BZOJ-2037 Sue的小球 DP+费用提前
- 火车采集 PHP插件 post,火车采集器2010版PHP插件增加扩展的方法
- 计算机应用基础素材,计算机应用基础(Windows XP+Office 2003)、素材和习题答案-王向慧 计算机应用基础...
- 计算机基础知识(基础入门小白专属)九
- 快速原型设计工具(Axure)元件库导入
- --Redis入坑--RedisPipelineException:Pipeline contained one or more invalid commands;WRONGTYPE ...
- 【HCIE考试喜报】2022年11月11日考试通过
- Hotel MoMc蔓兰酒店融资6000万,松禾资本和第一资产共同投资
- 汇编语言使用宏,实现两个字节压缩BCD数相加
- 广告买量支付方式 cpa cpc cps cpt
- 数据结构与算法分析(第一周)
- TSC TTP-244 Pro打印机QT版本开发
热门文章
- 造车行业百年未有变局之下,一个「老玩家」开始了自己的赶超
- 从LeNet到EfficientNet:CNN的演变和特点总结
- 困扰人工智能50多年的常识问题,是否迎来“破局”?
- 2020 年了,深度学习接下来到底该怎么走?
- 爬取30亿人脸被600家执法机构使用,这家公司揭美国数据隐私老底
- 「NLP」ALBERT:更轻更快的NLP预训练模型
- 史上最强GAN被谷歌超越!标注数据少用90%,造假效果却更逼真
- 理解五个基本概念,让你更像机器学习专家
- 专访丨李开复:AI时代下努力工作未必能买车买房
- torch中tensor的普通索引以及index_select()