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去重的更多相关文章

  1. postgresql中使用distinct去重

    select语法 [ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ...

  2. 关于Django中的数据库操作API之distinct去重的一个误传

    转载自http://www.360doc.com/content/18/0731/18/58287567_774731201.shtml django提供的数据库操作API中的distinct()函数 ...

  3. 【转载】C#中通过Distinct方法对List集合进行去重

    在C#的List集合对象中,可以使用Distinct方法来对List集合元素进行去重,如果list集合内部元素为值类型,则Distinct方法根据值类型是否相等来判断去重,如果List集合内部元素为引 ...

  4. Linq中关键字的作用及用法

    Linq中关键字的作用及用法 1.All:确定序列中的所有元素是否都满足条件.如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false. Demo: 此示例使用 ...

  5. Linq 中查询一个表中指定的字段

    //Linq中查询一个表中指定的几个字段: ); // FindAllItems()为查询对应表的所有数据的方法: // Where 里面为查询条件 // Select 为查询的筛选条件 new{} ...

  6. linq中的contains条件

    linq中的contains条件   在sql查询语句中,in 在linq 中用contains,并且contains前面是数组,而后面是列名,如: SELECT distinct BH FROM c ...

  7. Linq中join & group join & left join 的用法

    Linq中join & group join & left join 的用法 2013-01-30 11:12 12154人阅读 评论(0) 收藏 举报  分类: C#(14)  文章 ...

  8. 总结Javascript中数组各种去重的方法

    相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...

  9. .NET-list扩展方法Distinct去重

    原文链接:https://blog.csdn.net/daigualu/article/details/70800012 .NET中list的扩展方法Distinct可以去掉重复的元素,分别总结默认去 ...

随机推荐

  1. Android 在webView中创建web应用(译文)

    如果你想在客户端添加一个web应用程序或者仅仅一个web页面,你可以通过使用WebView,WebView是基于android中View的扩展,能够在Activity的layout中实现显示网页,它不 ...

  2. CodeViz产生函数调用图

    一.安装过程   1.CodeViz的安装 0).确认你已经安装Graphviz[ http://www.graphviz.org/] 1).下载CodeViz.[ http://www.csn.ul ...

  3. GridControl 列中显示图片 z

    如何在 DevExpress.XtraGrid.GridControl 显示图片列. 方法很多,我把它们逐一写在附言中,方便大家分情况合理使用. 附言1  附言2  附言3  第 1 条附言  ·  ...

  4. TFS2010中文版安装

    VS2010的中文版出来一段时间了,对TFS2010的了解,也有一段时间了,只不过中文版还是首次见到.于是把第一次安装的图片分享出来,公供参数. TFS2010安装环境是操作系统为Windows Se ...

  5. Selenium WebDriver + Grid2 + RSpec之旅(二)----Grid2的配置

    Selenium WebDriver + Grid2 + RSpec之旅(二) ----Grid2的配置 为什么要使用Selenium-Grid 分布式运行大规模的TestCase 能够通过一个中央节 ...

  6. bat处理打开关门exe

    @echo off rem rem 注释 tastkill /f /im a.exe cd %CD% %CD:~0,1%: cd  %Cd%b start %CD%a.exe cd .. %CD:~0 ...

  7. JSP页面同时操作所有Input输入框

    项目里要写个function,对页面上所有input输入框进行非空判断,对非空input全部置为readOnly,提交的时候判断是否有空白项目. var inputs=document.getElem ...

  8. 白帽子讲Web安全1.pdf

    第一章 我的安全世界观 安全是一个持续过程 6种威胁:Spoofing(伪装).Tampering(篡改).Repudiation(抵赖).InformationDisclosure(信息泄漏).De ...

  9. Tyvj P3119 核电站问题 动态规划

    题目:http://tyvj.cn/p/3119 P3119 核电站问题 时间: 1000ms / 空间: 65536KiB / Java类名: Main 描述 一个核电站有N个放核物质的坑,坑排列在 ...

  10. ACM1229_还是A+B(求A的第K位的数公式:A%((int)(pow(10,K)))

    #include<stdio.h> #include<math.h> int main() { int A,k,B,sum,c,d; while(scanf("%d% ...