Linq Distinct 自定义比较】的更多相关文章

一.定义 1.Falcon_PumpX_Equal_Comparer :类名,随便取名 2.IEqualityComparer:必须继承这个接口 3.Falcon_PumpX:需要去重的对象 4.IEqualityComparer.GetHashCode  是接口必须实现的方法 private class Falcon_PumpX_Equal_Comparer : IEqualityComparer<Falcon_PumpX> {      bool IEqualityComparer<…
private class MyMenuComparer : IEqualityComparer { public bool Equals(ParMenu x, ParMenu y){ return x.parentColor == y.parentColor && x.parentMenu == y.parentMenu; } public int GetHashCode(ParMenu obj) { return obj.parentMenu.Length; } }…
问题引出:在实际中遇到一个问题,要进行集合去重,集合内存储的是引用类型,需要根据id进行去重.这个时候linq 的distinct 就不够用了,对于引用类型,它直接比较地址.测试数据如下: class Person { public int ID { get; set; } public string Name { get; set; } } List<Person> list = new List<Person>() { new Person(){ID=1,Name="…
在项目中想必大家肯定是使用各种ORM, 如:NH.EF.fluent Data. 然而我在使用ORM的这几年中,随着数据库的结构越来越复杂,自定义查询的越来越多,但是一直没有解决一个问题就是自定义查询,每遇到自定义查询时就需要手动建个业务实体来承载自定义查询的结果集. 上周在萧秦的博客中突然发现了一句代码,让我眼前一亮: public IEnumerable<dynamic> Get() { //构建查询参数 var pQuery = ParamQuery.Instance() .Select…
using System; using System.Collections.Generic; using System.Linq; namespace LinqTest { class Program { static void Main() { List<Product> listProduct = new List<Product> { ,ProductNo=",Tag="a"}, ,ProductNo=",Tag="a&qu…
转载:http://www.cnblogs.com/ldp615/archive/2011/08/01/distinct-entension.html 只可惜linq默认不支持.Distinct(p => p.ID); 试想如果能写成下面的样子,是不是更简单优雅: var p1 = products.Distinct(p => p.ID); var p2 = products.Distinct(p => p.Name); 使用一个简单的 lambda 作为参数,也符合 Linq 一贯的风…
创建 IEqualityComparer的接口类必须实现Equals和GetHashCode方法 public class TipComparer : IEqualityComparer<TipDetails> { public bool Equals(TipDetails x, TipDetails y) { if (Object.ReferenceEquals(x, y)) return true; if (Object.ReferenceEquals(x, null) || Object…
//调用 return producePlantlst.Distinct(new item_collection_DistinctBy_item1()).ToList(); //方法 public class item_collection_DistinctBy_item1 : IEqualityComparer<FMDS_ProducePlantInfo> { public bool Equals(FMDS_ProducePlantInfo x, FMDS_ProducePlantInfo…
在软件应用中有时候会出现这样的界面:上面是利用多选框和下拉框组合的筛选条件.下面表格展示筛选后的数据.如下图 上面是筛选条件,表格是根据筛选条件筛选的结果. 如果表格不支持筛选功能.可以利用Linq对Datatable进行筛选. C#: DataTable data = new DataTable(); data=getdata();//获取data数据 var result = data.AsEnumerable().Where(p => ( cmbsf.selected ? p.Field<…
最近项目中在用Linq Distinct想要将重复的资料去除时,发现它跟Any之类的方法有点不太一样,不能很直觉的在呼叫时直接带入重复数据判断的处理逻辑,所以当我们要用某个成员属性做重复数据的判断时,就必需绕一下路,这边稍微将处理的方法做个整理并记录一下. 首先为了方便接下去说明,我们必须先来准备后面会用到的数据类别,这边一样用笔者最常用来示范的Person类别,内含两个成员属性ID与Name. 01.public struct Person 02.{ 03.#region Property 0…
最近项目中在用Linq Distinct想要将重复的资料去除时,发现它跟Any之类的方法有点不太一样,不能很直觉的在呼叫时直接带入重复数据判断的处理逻辑,所以当我们要用某个成员属性做重复数据的判断时,就必需绕一下路,这边稍微将处理的方法做个整理并记录一下. 首先为了方便接下去说明,我们必须先来准备后面会用到的数据类别,这边一样用笔者最常用来示范的Person类别,内含两个成员属性ID与Name. view source print? 01.public struct Person 02.{ 03…
当前位置: 主页 > 编程开发 > Asp.net视频教程 > Asp.net之LINQ入门视频教程 > http://www.xin1234.com/Program/AspnetShiPin/AspNetLINQYmSp/ 1.掌握LINQ中的基本概念 上传日期:2014-09-17 02:57:38 相关摘要: - LINQ有关的语言特性:隐式类型 - 网络不稳定的基本处理方法 - python的编程概念比较全面,比vba来得全面,适用范围也广得多了 2.理解扩展方法Lambd…
如今,软件应用环境越来越多样化,软件需要处理的数据量也日渐庞大,数据之间的关系日渐复杂.从而带动了存储技术的不断发展,越来越多的数据存储格式被应用到各种软件中. 通常,针对数据的查询是用简单的字符串文本来编写的查询语句,比如传统的SQL查询语句,没有编译时的类型检查,安全性.方便性都不好.此外,开发人员还需要为不同的数据源学习不同的查询语言,比如,查询SQL数据库的T-SQL.查询XML数据的DOM结构等. 为了解决上面的问题,微软推出了一项具有突破性的新特性——语言集成查询(LINQ).LIN…
使用代理实现对C# list distinct操作   范型在c#编程中经常使用,而经常用list 去存放实体集,因此会设计到对list的各种操作,比较常见的有对list进行排序,查找,比较,去重复.而一般的如果要对list去重复如果使用linq distinct方式,会遇到一些坑爹的问题,发现结果集中还是存在重复数据,原因是使用这种方法是对对象的引用去重复,并不满足我们的需求.因此本文通过c#代理的方式实现对list distinct操作. 先介绍一下对list去重复传统的方法,代码如下: L…
由于业务场景的需要,海量的数据需要进行处理.组装,难免会出现冗余的重复数据.如何处理重复的数据就是一个问题. 简单的集合中,去重就可以用linq distinct来完成.对于复杂的集合直接使用distinct就会显得没那么有效了. 造数据 构造1M的orderentity,非重复的数据为1M/2. IList<OrderEntity> sourceList = new List<OrderEntity>(); ; i < ; i++) { OrderEntity o = ne…
范型在c#编程中经常使用,而经常用list 去存放实体集,因此会设计到对list的各种操作,比较常见的有对list进行排序,查找,比较,去重复.而一般的如果要对list去重复如果使用linq distinct方式,会遇到一些坑爹的问题,发现结果集中还是存在重复数据,原因是使用这种方法是对对象的引用去重复,并不满足我们的需求.因此本文通过c#代理的方式实现对list distinct操作. 先介绍一下对list去重复传统的方法,代码如下: List<ReviewersReport> report…
C# LINQ   1. 自定义 Master,Kongfu 类 1 class Master 2 { 3 4 public int Id { get; set; } 5 public string Name { get; set; } 6 public int Age { get; set; } 7 public string MenPai { get; set; } 8 public string Kongfu { get; set; } 9 public int Level { get;…
1.LINQ简述 2.LINQ优雅前奏的音符 2.1.隐式类型 (由编辑器自动根据表达式推断出对象的最终类型) 2.2.对象初始化器 (简化了对象的创建及初始化的过程) 2.3.Lambda表达式 (对匿名方法的改进,加入了委托签名的类型推断并很好的与表达式树的结合) 2.4.扩展方法 (允许在不修改类型的内部代码的情况下为类型添加独立的行为) 2.5.匿名类型 (由对象初始化器推断得出的类型,该类型在编译后自动创建) 2.6.表达式目录树(用数据结构表示程序逻辑代码) 3.LINQ框架的主要设…
本篇体验LINQ的各种查询运算符.   先创建一个泛型方法,用来显示查询结果: private static void DisplayQuery<T>(IEnumerable<T> query) { foreach (T item in query) { //Console.WriteLine(item.ToString()); Console.Write(item.ToString() + " "); } } .csharpcode, .csharpcode…
今天我们来继续丰富上次的例子.我们来搞些 稍微复杂点的应用. 首先我们来加一个全选 的功能. 上一篇的例子里我们看到 分页时载入的是我们通过linq 查询自定义列 然后构建的匿名类 .使用这种EF框架+linq 查询的方式 我认为不方便的一点就是 要不你就只能select 一个固定对应表的数据模型类名 ,但是序列化成json的时候对外键类引用有天然的bug  ,就是框架自动序列化成json格式时会出循环引用错误 .序列化类型为XX的对象时检测到循环引用.没办法 我们能做的就是屏蔽某些属性 .方式…
因为用到list,要去除重复数据,尝试了几种方法.记录于此... 测试数据: List<string> li1 = new List<string> { "8", "8", "9", "9" ,"0","9"}; List<string> li2 = new List<string> { "张三", "张三&q…
因为用到list,要去除重复数据,尝试了几种方法.记录于此... 测试数据: List<string> li1 = new List<string> { "8", "8", "9", "9" ,"0","9"}; List<string> li2 = new List<string> { "张三", "张三&q…
因为用到list,要去除重复数据,尝试了几种方法.记录于此... 测试数据: List<"}; List<string> li2 = new List<string> { "张三", "张三", "李四", "张三", "王五", "李四" }; List<string> li3 = new List<string> { &…
因为用到list,要去除重复数据,尝试了几种方法.记录于此... 测试数据: List<string> li1 = new List<string> { "8", "8", "9", "9" ,"0","9"}; List<string> li2 = new List<string> { "张三", "张三&q…
Dictionary是无序的,如果想排序,需要使用SortDictionary. 下面是一个用法示例 //按照某个字段排序 public void SortByCardItem(string itemName,SortOrder sortOrder) { List<PatientCard> returnList = new List<PatientCard>(); SortedDictionary<string, PatientCard> sd = new Sorted…
Equals和GetHashCode Equals每个实现都必须遵循以下约定: 自反性(Reflexive): x.equals(x)必须返回true. 对称性(Symmetric): x.equals(y)为true时,y.equals(x)也为true. 传递性(Transitive): 对于任何非null的应用值x,y和z,如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)必须返回true. 一致性(Consistence): 如果…
C# 代码整洁指南 零.前言 一.C# 代码标准和原则 二.代码审查--过程和重要性 三.类.对象和数据结构 四.编写整洁的函数 五.异常处理 六.单元测试 七.端到端系统测试 八.线程和并发 九.设计和开发 API 十.使用 API 密钥和 Azure 密钥保管库保护 API 十一.解决横切关注点 十二.使用工具来提升代码质量 十三.重构 C# 代码--确定代码异味 十四.重构 C# 代码--实现设计模式 十五.答案 C#10 和 .NET6 代码跨平台开发 零.前言 一.你好,C#!欢迎使用…
当自定义一个类的时候,如果需要用到对比的功能,可以自己重写Equals方法,最整洁的方法是重写GetHashCode()方法. 但是,这个方法只适用于对象自身的对比(如if(a==b))以及字典下的Contains(如dicTest.Contains<T>(a)),在Linq下的Distinct下无效. Linq下的Distinct需要我们再写一个继承IEqualityComparer的类,分别如下 using System.Collections.Generic; namespace Ser…
七.聚合操作符 聚合函数将在序列上执行特定的计算,并返回单个值,如计算给定序列平均值.最大值等.共有7种LINQ聚合查询操作符:Aggregate.Average.Count.LongCount.Max.Min和Sum. 1. Aggregate Aggregate操作符对集合值执行自定义聚合运算.例如,需要列出所有产品类别清单,每个类别名称之间用顿号连接.以下的代码演示了这一过程: //方法语法 var q = db.Categories .Select(c => c.CategoryName…
LINQ to SQL 语句(2)之 Select/Distinct [1] Select 介绍 1 [2] Select 介绍 2 [3] Select 介绍 3 和  Distinct 介绍 Select/Distinct 操作符 适用场景:o(∩_∩) o„ 查询呗. 说明:和 SQL 命令中的 select 作用相似但位置不同, 查询表达式中的 select 及所接子句是 放在表达式最后并把子句中的变量也就是结 果返回回来:延迟. Select/Distinct 操作包括 9 种形式,分…