用于Linq的去重 Distinct】的更多相关文章

        /// <summary>         /// 用于Linq的去重,扩展方法需要放到静态类中         /// </summary>         /// <typeparam name="TSource"></typeparam>         /// <typeparam name="TKey"></typeparam>         /// <para…
刚开始接触LINQ时使用distinct去重时和大家一样遇到了一些麻烦,很感谢 http://www.cnblogs.com/A_ming/archive/2013/05/24/3097062.html 提供的一些方法. 后来经过深入学习,了解了一些更为简洁的方法,在这里与大家一同分享. 如上图在WebConfig表中含有以下三个字段Name,Linkhref和Type,现在我们要对Type去重获取所有类型. 第一种使用Distinct方法: ViewBag.Dist = db.WebConfi…
mysql 查询去重 distinct   待完善内容..…
当自定义一个类的时候,如果需要用到对比的功能,可以自己重写Equals方法,最整洁的方法是重写GetHashCode()方法. 但是,这个方法只适用于对象自身的对比(如if(a==b))以及字典下的Contains(如dicTest.Contains<T>(a)),在Linq下的Distinct下无效. Linq下的Distinct需要我们再写一个继承IEqualityComparer的类,分别如下 using System.Collections.Generic; namespace Ser…
Linq的Distinct和T-Sql的distinct一样,可以将重复的结果集去重注意: 1 distinct去重记录要求每个字段都重复时,才算重复对象,这与sql一样2 distinct语句可以和order by语句放在一起使用,对彼此不产生影响3 distinct的数据集中不能有复杂对象,如果出现List<T>这种引用类型,那linq解释成T-Sql时候,会把distinct去掉,也就是失去去重的作用 例子DataClasses1DataContext db = new DataClas…
转自:http://blog.csdn.net/helencoder/article/details/50328629 近期项目中,遇到数据表去重要求,对于ThinkPHP的去重有了更加准确的认识和体会. 两种去重方式: $test_data = M('hot'); //实例化数据表 $data = $test_data->Distinct(true)->field('descriprion')->order('description desc')->select(); //利用d…
IQueryable 继承自IEnumerable 先举例: #region linq to object List<People> peopleList = new List<People>(); peopleList.Add(new People { UserName = "zzl", Email = "1" }); peopleList.Add(new People { UserName = "zzl", Email…
----------------------------------------------------.对基础类型排序 方法一: 调用sort方法,如果需要降序,进行反转: List<int> list = new List<int>();    list.Sort();// 升序排序    list.Reverse();// 反转顺序 方法二: 使用lambda表达式,在前面加个负号就是降序了 List<int> list= new List<int>(…
https://www.cnblogs.com/qixu/p/6033532.html http://www.cnblogs.com/A_ming/archive/2013/05/24/3097062.html https://docs.microsoft.com/zh-cn/dotnet/api/system.linq.enumerable.distinct?view=netframework-4.8 使用IEqualityComparer需要注意的是,如果成员变量中包含byte[]类型,计算…
写在前面: 最近在项目中使用了Criteria的分页查询,当查询的数据没有重复的记录还好,但是当数据有关联并出现重复记录的时候,就要去重,那么就会出现查询的记录数与实际的不一致的问题.这里也记录一下解决的办法. 这里只是拿学生Student表与班级来举例,没有经过测试 1.查询全部的数据,不进行分页处理,使用distinct去重完全是可以的,代码大致如下: /** * 查询所有的学生 不分页去重 * @return * @throws Exception */ public List<Stude…
通过自定义扩展方法DistinctBy实现去重 public static IEnumerable<TSource> DistinctBy<TSource, TKey> (this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) { HashSet<TKey> seenKeys = new HashSet<TKey>(); foreach (TSource e…
SQL SELECT DISTINCT语句 在表中可能会包含重复值.这并不成问题, 不过有时你也许希望仅仅列出不同(distinct)的值. 关键词DISTINCT 用于返回唯一不同的值 语法 SELECT DISTINCT 列名称 FROM 表名称 使用DISTINCT关键词 如果要从Company列中选取所有的值,我们需要使用SELECT语句: SELECT Company FROM Orders “Orders”表 Company OrderNumber IBM 3532 W3School…
条件去重 我们知道, Java8 lambda自带的去重为 distinct 方法, 但是只能过滤整体对象, 不能实现对象里的某个值进行判定去重, 比如: List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 5, 5, 5, 6, 7); List<Integer> distinctNumbers = numbers.stream() .distinct() .collect(Collectors.toList()); Syst…
很多情况下我们查询数据需要去重重复数据,下面就记录三个去重的方法. Distinct 最基本的去重形式,直接查询出数据后使用Distinct方法进行字段去重. var strList = new List<string>() { "1","2","1"}; var resultList = strList.Distinct();//结果1,2 IEqualityComparer 此方法扩展接口可以实现类级别的去重,比如我想实现其中一个…
select a.*, group_concat(distinct b.attribute_name) from sign_contract_info a left join sign_temp_attribute b on a.temp_attribute_id = b.id_ left join sign_temp_project c on a.temp_project_id = c.id_ where a.enable_=1 AND a.company_info_id = 32 group…
在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段,例如有如下表user: 用distinct来返回不重复的用户名:select distinct name from user;,结果为: 这样只把不重复的用户名查询出来了,但是用户的id,并没有被查询出来:…
在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段,例如有如下表user: 用distinct来返回不重复的用户名:select distinct name from user;,结果为: 这样只把不重复的用户名查询出来了,但是用户的id,并没有被查询出来:…
下面是dictionary的扩展 using System.Collections.Generic; namespace NetAnalysis.Common { public static class DictionaryExtensionMethodClass { /// <summary> /// 尝试将键和值添加到字典中:如果不存在,才添加:存在,不添加也不抛导常 /// </summary> public static Dictionary<TKey, TValue…
/** * 创建临时表 */ @Update({"drop temporary table if exists ${tableName};", "create temporary table ${tableName} select doctor_id from crm_speaker where 1=2 "}) void createTemoraryTable(@Param("tableName") String tableName); /**…
先贴源码地址 https://github.com/dotnet/corefx/tree/master/src/System.Linq/src .NET CORE很大一个好处就是代码的开源,你可以详细的查看你使用类的源代码,并学习微软的写法和实现思路.我们这个系列熟悉基本类库是一个目的,另一个目的就是学习微软的实现思路和编程方法. 今天我们就单独讨论的问题是linq中的distinct方法是如何实现.最后还会有我们实际编程时候对distinct方法的扩展. System.Linq linq中Di…
现在以下数据 查有出现的TeacherId SELECT TeacherID FROM Student 结果 有重复的ID出现 确实查法: SELECT TeacherID FROM Student GROUP BY TeacherID SELECT DISTINCT TeacherID FROM Student 结果: 可以看得出  DISTINCT 的作用就是去重 DISTINCT 还可以跟聚合函数使用: --两种查法得出的结果一样 都是统计有多少个不同的老师 SELECT COUNT( D…
比如数据库里有一表,有两个字段:ID User1 小白2 小红3 小白 过滤User列为小白的重复项后,我想要得到:ID User1 小白2 小红 如果写db.linq.customer.Distinct<customer>();这样只能是每行全部匹配过滤,请问我应该怎么做? 自定义比较运算符: //自定义比较符 public class MyComparer : IEqualityComparer<Customer> { public bool Equals(Customer x…
LINQ(Language Integrated Query) LINQ语言集成查询是一组用于C#语言的扩展.它允许编写C#代码对数据集进行查询,比如查询内存中的对象或查询远程数据库的表.利用linq,程序员不必掌握数据库查询语句而是使用Linq就能完成相同的查询任务.而传统数据查询的弱点很多,比如执行简单查询也需要冗长的操作代码,查询语句是字符串格式,无法让编译器执行检查错误及早提示,查询不是强类型,查询参数容易写错,查询结果没有真正面向对象,每次查询取结果还得事先知道列名或列索引,不使用抽象…
大家好,这是 [C#.NET 拾遗补漏] 系列的第 08 篇文章,今天讲 C# 强大的 LINQ 查询.LINQ 是我最喜欢的 C# 语言特性之一. LINQ 是 Language INtegrated Query 单词的首字母缩写,翻译过来是语言集成查询.它为查询跨各种数据源和格式的数据提供了一致的模型,所以叫集成查询.由于这种查询并没有制造新的语言而只是在现有的语言基础上来实现,所以叫语言集成查询. 一些基础 在 C# 中,从功能上 LINQ 可分为两类:LINQ to Object 和 L…
LINQ 是 Language INtegrated Query 单词的首字母缩写,翻译过来是语言集成查询.它为查询跨各种数据源和格式的数据提供了一致的模型,所以叫集成查询.由于这种查询并没有制造新的语言而只是在现有的语言基础上来实现,所以叫语言集成查询. 基础 从功能上 LINQ 可分为两类: LINQ to Object,查询内存集合,直接把查询编译成 .NET 代码执行. LINQ to Provider,查询自定义数据源,由开发者提供相应数据源的 Provider 并翻译和执行自定义查询…
2个要点: 1.linq操作的集合必须实现IEnumerable接口,所以在这3.0之前为实现该接口的集合需通过Cast或TypeOf方法转换成可Linq的集合; 2.查询式和Lame那啥表达式都可以一起使用.那个方便用哪个,他们只在第一次使用时才会真正去查询; List<Employee> ils = new List<Employee>() { new Employee(){IDCode="jack5",Age=20,littleName="ab&…
在做后台开发的时候,总是会碰到将拿到手的数据进行条件校验,而这些数据又不仅仅是单纯的一个,有时候会是一串大数据,需要自己在后台处理进而展示到前台页面上,酱紫自己第一反应就是使用for循环来遍历,并把所需的数据放在相应的地方.可是导致的后果却是再审视后台的代码时,那么多那么多重复的代码,我可以把对同一个dom节点的遍历写两遍,于是我就被同事大神给嘲笑了,不过幸好,他后来教了我一个“神武器”——linq.js,一个专门解决我遇到的问题的神器. linq,全称为Language Integrated…
name age sex Lucy 22 woman Lily 23 woman Tom 24 man Lucy 22 woman Lily 23 woman LiLei 25 man List<Person> list_persons = ,,,,,,"man")); 如同上表中,名字(name)中重复的想要去除,使用linq进行去重的方法,使用Distinct()根本无法达到要求.那么: var list_distinct = list_Persons.GroupBy(…
一.linq的基本概念 LINQ是C#和VB中的统一查询语法,使用对象来保存和检索来自不同来源(如数据库.xml.对象集合)的数据. 主要功能:消除了编程语言和数据库之间的不匹配,以及为不同类型的数据源提供统一的查询接口. 适用范围:LInq适用于实现了IEnumerable <T>(IQueryable继承于IEnumerable )的实例,如:List,Dictionary,Queue,LinkedList,Array等 二.linq的使用 有两种方法可以将LINQ查询写入IEnumera…
Enumable类型是linq to object   是一个很特殊的类型   这个类型的数据源都是在程序的内存中 Queryable类型是 Linq to sql   对数据库进行操作都是这个类型     这个类型会生成表达式目录树 方法体只能有一行代码 Expression 表达式目录树 ///外链接  需要用join       into       .DefaultIfEmpty  这样才是外链接 根据价目表行信息跟产品进行查询 某个价格组的行信息存在某个产品的价格记录   就返回这个价…