集合操作符对元素的集合或序列集合进行操作,并返回一个集合。LINQ共有4种集合查询操作符:Distinct、Union、Intersect和Except。

1. Distinct

  Distinct操作符删除集合中重复的值,并返回该集合中互不相同的元素。

1>. 原型定义

public static IQueryable<TSource> Distinct<TSource>(this IQueryable<TSource> source);

public static IQueryable<TSource> Distinct<TSource>(this IQueryable<TSource> source, IEqualityComparer<TSource> comparer);

2>. 示例

int[] fibonacci = new int[] { 1, 1, 2, 3, 5, 8, 13, 21 };
var expr = from f in fibonacciselect f;
expr.Distinct();

int[] fibonacci = new int[] { 1, 1, 2, 3, 5, 8, 13, 21 };
var expr = from f in fibonacciwhere f > 5select f;
expr.Distinct();

var expr = from p in context.Productsselect p.ProductName;
expr.Distinct();

var expr = context.Products.Select(p => p.ProductName).Distinct();

int[] fibonacci = new int[] { 1, 1, 2, 3, 5, 8, 13, 21 };
var expr = fibonacci.Distinct().Count();

var expr = context.Products.Select(c => c.CategoryID).Distinct().Count();

int[] fibonacci = new int[] { 1, 1, 2, 3, 5, 8, 13, 21 };
var expr = fibonacci.Count(f => f % 2 == 0);

2. Union

  Union操作符返回两个序列或集合并集中的每个互不相同的元素。与Concat操作符不同,Union操作符返回互不相同的元素,而Concat操作符将返回所有的值。

1>. 原型定义

public static IEnumerable<TSource> Union<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second);

public static IEnumerable<TSource> Union<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer);

2>. 示例

int[] fibonacci = new int[] { 1, 1, 2, 3, 5, 8, 13, 21 };
int[] factorial = new int[] { 1, 2, 6, 24, 120 };IEnumerable<int> expr = fibonacci.Union(factorial);foreach (int item in expr)
{Console.Write(item + " ");
}

1 2 3 5 8 13 21 6 24 120

3. Intersect

  Intersect操作符返回两个序列的交集,即返回那些同时存在于两个序列或集合中的值。

1>. 原型定义

public static IEnumerable<TSource> Intersect<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second);

public static IEnumerable<TSource> Intersect<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer);

2>. 示例

int[] fibonacci = new int[] { 1, 1, 2, 3, 5, 8, 13, 21 };
int[] factorial = new int[] { 1, 2, 6, 24, 120 };IEnumerable<int> expr = fibonacci.Intersect(factorial);foreach (int item in expr)
{Console.Write(item + " ");
}

1 2

4. Except

  Except操作符与Intersect操作符相反,它返回两个序列中不同的部分,返回序列中所有不重复的值。

1>. 原型定义

public static IEnumerable<TSource> Except<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second);

public static IEnumerable<TSource> Except<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer);

2>. 示例

int[] fibonacci = new int[] { 1, 1, 2, 3, 5, 8, 13, 21 };
int[] factorial = new int[] { 1, 2, 6, 24, 120 };IEnumerable<int> expr = fibonacci.Except(factorial);foreach (int item in expr)
{Console.Write(item + " ");
}

3 5 8 13 21

转载于:https://www.cnblogs.com/libingql/p/4042946.html

LINQ系列:Linq to Object集合操作符相关推荐

  1. mysql linq any查询_LINQ标准查询操作符详解(转)

    一. 关于LINQ LINQ 英文全称是"Language-Integrated Query",中文为"语言集成查询",它是微软首席架构师.Delphi 之父和 ...

  2. .NET深入实战系列—Linq to Sql进阶

    .NET深入实战系列-Linq to Sql进阶 最近在写代码的过程中用到了Linq查询,在查找资料的过程中发现网上的资料千奇百怪,于是自己整理了一些关于Linq中容易让人困惑的地方. 本文全部代码基 ...

  3. C# LINQ系列:LINQ to DataSet的DataTable操作 及 DataTable与Linq相互转换

    LINQ to DataSet需要使用System.Core.dll.System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System. ...

  4. 【LINQ】LINQ 简介

    LINQ基本概念 LINQ(语言集成查询) 是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已经成为了编程语言的组成部分,在编程时可以进行语法检查, ...

  5. Kotlin 学习笔记(二)—— 数据类、密闭类、循环写法以及常用集合操作符

    在上篇笔记中,我们对 Kotlin 的基本类型.关键字.类与对象,以及与 Java 之间互调的内容有了一些认识,这篇笔记来看看 Kotlin 中几种特殊的类,以及集合相关的常用操作. 1. Kotli ...

  6. 重学JavaScript系列——(六)集合引用类型

    重学JavaScript系列--(六)集合引用类型 博主以扎实JavaScript基础为目的,以<JavaScript高级程序设计(第四版)>为核心参考资料,以一个"复习者&qu ...

  7. 【Groovy】map 集合 ( map 集合操作符重载 | - 操作符重载 | 代码示例 )

    文章目录 一.map 集合 " - " 操作符重载 二.完整代码示例 一.map 集合 " - " 操作符重载 对 map 集合 使用 " - &qu ...

  8. kotlin 添加第一个 集合_Flutter开发必学Dart语法篇之集合操作符函数与源码分析...

    简述: 在上一篇文章中,我们全面地分析了常用集合的使用以及集合部分源码的分析.那么这一节讲点更实用的内容,绝对可以提高你的Flutter开发效率的函数,那就是集合中常用的操作符函数.这次说的内容的比较 ...

  9. dart string 转 bool_Dart语法篇之集合操作符函数与源码分析(三)

    简述: 在上一篇文章中,我们全面地分析了常用集合的使用以及集合部分源码的分析.那么这一节讲点更实用的内容,绝对可以提高你的Flutter开发效率的函数,那就是集合中常用的操作符函数.这次说的内容的比较 ...

  10. Java集合系列之四大常用集合(ArrayList、LinkedList、HashSet、HashMap)的用法

    Java集合系列之四大常用集合(ArrayList.LinkedList.HashSet.HashMap)的用法 ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是A ...

最新文章

  1. Dynamic Setting ImageUrl In DataPager
  2. 数据挖掘 —— 模型评估
  3. jQuery使用(十二):工具方法之type()之类型判断
  4. Sublime Text + CTags + Cscope (部分替代Source Insight)
  5. 修改kafka java环境_单节点Kafka、Zookeeper安装、启用过程(Windows OS环境)
  6. eclipse adt如何切换到设计界面_如何将你的UI界面设计的更精致?不仅仅是运用对比,还要注意细节 | 分享...
  7. mysql事务隔离的锁_mysql锁及四种事务隔离级别笔记
  8. 通用的流氓软件手动清理方法
  9. LaTeX下载安装与使用
  10. 什么是游戏盾,如何使用
  11. android edge 去广告,edge浏览器怎么去广告? edge浏览器去广告插件adsafe的使用方法...
  12. C语言课程设计之火车订票系统实现
  13. Instant Contiki
  14. noip赛后【微笑】
  15. MailConnectException: Couldn‘t connect to host
  16. asp.net(c#)中IsPostBack是什么意思
  17. 用计算机控制食品生产论文,计算机控制系统论文范文2篇
  18. 百度地图api根据详细地址反查坐标
  19. Android——为图片增加水印,并且保存到图库刷新
  20. 利用7z程序压缩、解压

热门文章

  1. 用上了Godaddy的美国主机
  2. 慢日志之一:开启mysql慢查询日志并使用mysqldumpslow命令查看,分析诊断工具之四...
  3. 6个重要的.NET概念:栈,堆,值类型,引用类型,装箱,拆箱[转]
  4. 大规模分布式深度网络
  5. Go语言的一些使用心得
  6. 二维数组按某个键值排序 FOR PHP
  7. XHTML 教程 续二
  8. 未捕获异常string was not recognized_给你代码:PHP7中的异常与错误处理
  9. Hadoop2.2伪分布式搭建步骤
  10. Hibernate----面试题