Union All/Union/Intersect操作

适用场景:对两个集合的处理,例如追加、合并、取相同项、相交项等等。

Concat(连接)

说明:连接不同的集合,不会自动过滤相同项;延迟。

1.简单形式:

var q = ( from c in db.Customers select c.Phone ).Concat( from c in db.Customersselect c.Fax ).Concat( from e in db.Employees select e.HomePhone );

语句描述:返回所有消费者和雇员的电话和传真。

2.复合形式:

var q = ( from c in db.Customers select new { Name = c.CompanyName, c.Phone } ).Concat( from e in db.Employees select new { Name = e.FirstName + " " + e.LastName, Phone = e.HomePhone } );

语句描述:返回所有消费者和雇员的姓名和电话。

Union(合并)

说明:连接不同的集合,自动过滤相同项;延迟。即是将两个集合进行合并操作,过滤相同的项。

var q = ( from c in db.Customers select c.Country ).Union( from e in db.Employeesselect e.Country );

语句描述:查询顾客和职员所在的国家。

Intersect(相交)

说明:取相交项;延迟。即是获取不同集合的相同项(交集)。即先遍历第一个集合,找出所有唯一的元素,然后遍历第二个集合,并将每个元素与前面找出的元素作对比,返回所有在两个集合内都出现的元素。

var q = ( from c in db.Customers select c.Country ).Intersect( from e in db.Employeesselect e.Country );

语句描述:查询顾客和职员同在的国家。

Except(与非)

说明:排除相交项;延迟。即是从某集合中删除与另一个集合中相同的项。先遍历第一个集合,找出所有唯一的元素,然后再遍历第二个集合,返回第二个集合中所有未出现在前面所得元素集合中的元素。

var q = ( from c in db.Customers select c.Country ).Except( from e in db.Employeesselect e.Country );

语句描述:查询顾客和职员不同的国家。

Top/Bottom操作

适用场景:适量的取出自己想要的数据,不是全部取出,这样性能有所加强。

Take

说明:获取集合的前n个元素;延迟。即只返回限定数量的结果集。

var q = ( from e in db.Employees orderby e.HireDate select e) .Take(5);

语句描述:查询出最早5位雇用的雇员。

Skip

说明:跳过集合的前n个元素;延迟。即我们跳过给定的数目返回后面的结果集。

var q = ( from p in db.Products orderby p.UnitPrice descending select p) .Skip(10);

语句描述:查询出第11个最贵产品后面的所有产品。

TakeWhile

说明:直到某一条件成立就停止获取;延迟。即用其条件去依次判断源序列中的元素,返回符合判断条件的元素,该判断操作将在返回false或源序列的末尾结束 。

SkipWhile

说明:直到某一条件成立就停止跳过;延迟。即用其条件去判断源序列中的元素并且跳过第一个符合判断条件的元素,一旦判断返回false,接下来将不再进行判断并返回剩下的所有元素。

Paging(分页)操作

适用场景:结合Skip和Take就可实现对数据分页操作。

var q = ( from c in db.Customers orderby c.ContactName select c) .Skip(50) .Take(10);

语句描述:跳过前50条记录,取出接下来的10条记录,形成乘积表在第6页显示。

var q = ( from p in db.Products where p.ProductID > 50 orderby p.ProductID select p) .Take(10);

SqlMethods操作

在LINQ to SQL语句中,为我们提供了SqlMethods操作,进一步为我们提供了方便,例如Like方法用于自定义通配表达式,Equals用于相比较是否相等。

Like

自定义的通配表达式。%表示零长度或任意长度的字符串;_表示一个字符;[]表示在某范围区间的一个字符;[^]表示不在某范围区间的一个字符。比如查询消费者ID以“C”开头的消费者。

var q = from c in db.Customers where SqlMethods.Like(c.CustomerID, "C%") select c;

比如查询消费者ID没有“AXOXT”形式的消费者:

var q = from c in db.Customers where !SqlMethods.Like(c.CustomerID, "A_O_T") select c;

DateDiffDay

说明:在两个变量之间比较。分别有:DateDiffDay、DateDiffHour、DateDiffMillisecond、DateDiffMinute、DateDiffMonth、DateDiffSecond、DateDiffYear

var q = from o in db.Orders where SqlMethods .DateDiffDay(o.OrderDate, o.ShippedDate) < 10 select o;

语句描述:查询所有10天之内的订单。

Compiled Query操作

说明:在之前我们没有好的方法对写出的SQL语句进行编辑重新查询,现在我们可以这样做,看下面一个例子:

//1.创建compiled query 
NorthwindDataContext db = new NorthwindDataContext(); var fn =CompiledQuery.Compile( (NorthwindDataContext db2, string city) => from c indb2.Customers where c.City == city select c); 
//2.查询城市为London的消费者,用LonCusts集合表示,这时可以用数据控件绑定 var LonCusts = fn(db, "London"); 
//3.查询城市为Seattle的消费者var SeaCusts = fn(db, "Seattle");

Union All/Union/Intersect操作的更多相关文章

  1. LINQ 之Union All/Union/Intersect操作

    闪存 首页 新随笔 管理 订阅     Union All/Union/Intersect操作 适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不同 ...

  2. C#Linq中的Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods,skip,take,takewhile,skipwhile,编译查询等

    我们继续讲解LINQ to SQL语句,这篇我们来讨论Union All/Union/Intersect操作和Top/Bottom操作和Paging操作和SqlMethods操作 . Union Al ...

  3. Oracle中的Union、Union All、Intersect、Minus

    Oracle中的Union.Union All.Intersect.Minus  众所周知的几个结果集集合操作命令,今天详细地测试了一下,发现一些问题,记录备考. 假设我们有一个表Student,包括 ...

  4. LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods

    我们继续讲解LINQ to SQL语句,这篇我们来讨论Union All/Union/Intersect操作和Top/Bottom操作和Paging操作和SqlMethods操作 . Union Al ...

  5. 集合运算—union(并集)、intersect(交集)和except(差集)

    一.集合运算的基本格式是: 集合查询1 <集合运算> 集合查询2 [order by ...] 二.集合运算符是对两个集合操作的,两个集合必须具有相同的列数,列具有相同的数据类型(至少能隐 ...

  6. Union、Union All、Intersect、Minus用法和区别

    假设我们有一个表Student,包括以下字段与数据: [c-sharp] view plain copydrop table student;    create table student  (   ...

  7. Union、Union All、Intersect、Minus

    转自:http://www.2cto.com/database/201208/148795.html Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序: Union All: ...

  8. [转]C#Linq中的Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods,skip,take,takewhile,skipwhile,编译查询等

    本文转自:http://www.cnblogs.com/suizhikuo/p/3791799.html 我们继续讲解LINQ to SQL语句,这篇我们来讨论Union All/Union/Inte ...

  9. LINQ体验(8)——LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Paging和SqlMethods

    我们继续解说LINQ to SQL语句,这篇我们来讨论Union All/Union/Intersect操作和Top/Bottom操作和Paging操作和SqlMethods操作 . Union Al ...

随机推荐

  1. mysql优化后的主配置文件

    #!/bin/bash basedir=$mysql datadir=$mysql/data server_id=$(hostname -I | awk '{print $NF}'|awk -F '. ...

  2. BurpSuite Intruder模块匹配返回包内容

    很多时候burpsuite intruder爆破我们是看返回包的长度,那么如何根据返回包的内容来做筛选呢? 这里我用的本地某cms环境做个演示 Intruder模块怎么用的不用介绍了吧 直接进入正题 ...

  3. Phoenix 简单介绍

    转载自:https://blog.csdn.net/carolzhang8406/article/details/79455684 1. Phoenix定义 Phoenix最早是saleforce的一 ...

  4. vue-cli3配置多页面入口

    假如要单独将登陆页面当成一个项目入口文件: 第一步:创建一个登陆页面的文件 在项目public文件夹下创建一个login.html,其实就是将index.html复制一份,将title改一下: 第二步 ...

  5. jvm指令手册查看

    00-JVM指令手册 栈和局部变量操作 将常量压入栈的指令 aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 ...

  6. OpenCV reshape The Matrix is not continuous, thus its number of rows can not be changed

    When using OpenCV  reshape and gets this error: OpenCV Error: Image step is wrong (The matrix is not ...

  7. docker技术入门(1)

    1Docker技术介绍 DOCKER是一个基于LXC技术之上构建的container容器引擎,通过内核虚拟化技术(namespace及cgroups)来提供容器的资源隔离与安全保障,KVM是通过硬件实 ...

  8. [转] 修改sqlserver的数据库名、物理名称和逻辑文件名

    转载: https://blog.csdn.net/dym0080/article/details/81017777

  9. Prometheus基础(二)

    1.什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB).Prometheus使用Go语言开发,是Google BorgMon监控 ...

  10. Python2和Python3共存问题

    前提条件:先准备一个新电脑 1.下载Python2和Python3的安装包,直接官网下载:https://www.python.org/download 2.配置环境变量,可以手动配置,也可以安装的时 ...