Linq 中的distinct去重
Linq的Distinct和T-Sql的distinct一样,可以将重复的结果集去重
注意:
1 distinct去重记录要求每个字段都重复时,才算重复对象,这与sql一样
2 distinct语句可以和order by语句放在一起使用,对彼此不产生影响
3 distinct的数据集中不能有复杂对象,如果出现List<T>这种引用类型,那linq解释成T-Sql时候,会把distinct去掉,也就是失去去重的作用
例子
DataClasses1DataContext db = new DataClasses1DataContext();
2 var linq = from _data in db.Res_Item
3 join data2 in db.Res_ItemCategory on _data.ID equals data2.ItemID
4 join data3 in db.Res_ItemPrice on _data.ID equals data3.ItemID into list
5 select new Res_Item_Ext
6 {
7 ID = _data.ID, //列说明: 产品编号
8 Name = _data.Name, //列说明: 商品名称
9 Res_ItemPrice=list.ToList(),
10 };
11 var linq2 = linq.Where(i => i.ID == 5104).OrderBy(i => i.ID).Distinct().ToList();
12 linq2.ForEach(i => Console.WriteLine(i.ID + i.Name));
由于在结果集中出现List<T>这种复杂类型,所以distinct()操作失效,如图:
如果在结果集中没有复杂类型Res_ItemPrice属性,那distinct()语句会生效
结果是正确的:
Linq 中的distinct去重的更多相关文章
- postgresql中使用distinct去重
select语法 [ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ...
- 关于Django中的数据库操作API之distinct去重的一个误传
转载自http://www.360doc.com/content/18/0731/18/58287567_774731201.shtml django提供的数据库操作API中的distinct()函数 ...
- 【转载】C#中通过Distinct方法对List集合进行去重
在C#的List集合对象中,可以使用Distinct方法来对List集合元素进行去重,如果list集合内部元素为值类型,则Distinct方法根据值类型是否相等来判断去重,如果List集合内部元素为引 ...
- Linq中关键字的作用及用法
Linq中关键字的作用及用法 1.All:确定序列中的所有元素是否都满足条件.如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false. Demo: 此示例使用 ...
- Linq 中查询一个表中指定的字段
//Linq中查询一个表中指定的几个字段: ); // FindAllItems()为查询对应表的所有数据的方法: // Where 里面为查询条件 // Select 为查询的筛选条件 new{} ...
- linq中的contains条件
linq中的contains条件 在sql查询语句中,in 在linq 中用contains,并且contains前面是数组,而后面是列名,如: SELECT distinct BH FROM c ...
- Linq中join & group join & left join 的用法
Linq中join & group join & left join 的用法 2013-01-30 11:12 12154人阅读 评论(0) 收藏 举报 分类: C#(14) 文章 ...
- 总结Javascript中数组各种去重的方法
相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...
- .NET-list扩展方法Distinct去重
原文链接:https://blog.csdn.net/daigualu/article/details/70800012 .NET中list的扩展方法Distinct可以去掉重复的元素,分别总结默认去 ...
随机推荐
- Oracle core03_ACID
ACID特性 oracle如何使用undo和redo来保证了关系数据库的ACID特性. ACID的特性简单描述为: Atomic:以事务为单位的原子性 Consistency:保证数据一致性 Isol ...
- bzoj1034
贪心 尽可能让最强的赢,最弱的赢,都不行则最弱打最强 感性的想,我肯定要尽可能的赢,而且赢的要对等 实在不能赢就拿最小的拼,所谓的田忌赛马策略 由于总分一定,己方最差即己方最好时对方的分数 ..] o ...
- java常用重构优化总结--自己亲身体验
代码重构 6大原则: 单一职责原则(一个类最好最好只有一种行为动机,太多承担职责会导致耦合度太高). 开放封闭原则(功能可以扩展,但是不可以内部修改). 依赖倒转原则(应该依赖抽象 ...
- HDOJ/HDU 1029 Ignatius and the Princess IV(简单DP,排序)
此题无法用JavaAC,不相信的可以去HD1029题试下! Problem Description "OK, you are not too bad, em- But you can nev ...
- POJ 3186Treats for the Cows (区间DP)
详见代码 #include <stdio.h> #include <algorithm> #include <string.h> using namespace s ...
- cout internal
cout internal */--> pre { background-color: #2f4f4f;line-height: 1.6; FONT: 10.5pt Consola," ...
- dp hdu-4433 locker
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4433 题目大意: 给两个长度相等的数字串s1,s2.每次操作可以把连续的最多三位都+1或-1,如果超 ...
- 使用VNC实现多用户登录linux系统
vmare版本:12.0.0 build-2985596
- java之Comparator与Comparable
转自:http://blog.csdn.net/zhangerqing 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定 ...
- linux_tomcat7服务器日志爆满导致java崩溃的问题
在linux服务器上部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响. 最近刚刚出现了某台linux服务器上的java应用都假死或挂掉 然后我在输入命 ...