LINQ to SQL语句(8)之Concat/Union/Intersect/Except

Concat/Union/Intersect/Except操作

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

Concat(连接)

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

1.简单形式:var q = (
     from c in db.Customers
     select c.Phone
    ).Concat(
     from c in db.Customers
     select 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.Employees
     select e.Country
    );

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

Intersect(相交)

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

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

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

Except(与非)

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

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

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

时间: 2024-11-02 17:40:33

LINQ to SQL语句(8)之Concat/Union/Intersect/Except的相关文章

LINQ体验(8)—LINQ to SQL语句之Union All/Union/Intersect和Top/Bottom和Pag

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 All/Union/Intersect操作 适用场景:对两个集合的处理,例如追加.合并.取相同项.相交项等等. Concat(连接) 说明:连接不

LINQ体验(9)——LINQ to SQL语句之Insert/Update/Delete操作

我们继续讲解LINQ to SQL语句,这篇我们来讨论Insert/Update/Delete操作 .这个在我们的程序中最为常用了.我们直接看例子. Insert/Update/Delete操作插入(Insert)1.简单形式 说明:new一个 对象,使用InsertOnSubmit方法将其加入到对应的集合中,使用SubmitChanges ()提交到数据库. NorthwindDataContext db = new NorthwindDataContext(); var newCustome

LINQ体验(7)-LINQ to SQL语句之Group By/Having和Exists/In/Any/All/Contains

我们继续讲解LINQ to SQL语句,这篇我们来讨论Group By/Having操作符和 Exists/In/Any/All/Contains操作符. Group By/Having操作符 适用 场景:分组数据,为我们查找数据缩小范围. 说明:分配并返回对传入 参数进行分组操作后的可枚举对象.分组:延迟 1.简单形式: var q = from p in db.Products group p by p.CategoryID into g select g; 语句描述:使用Group By

LINQ体验(5)——LINQ to SQL语句之Select/Distinct和Count/Sum/Min/Max/Avg

上一篇讲述了LINQ,顺便说了一下Where操作,这篇开始我们继续说LINQ to SQL语句,目的让大家从语句的角度了解LINQ,LINQ包括LINQ to Objects.LINQ to DataSets.LINQ to SQL.LINQ to Entities.LINQ to XML,但是相对来说LINQ to SQL在我们程序中使用最多,毕竟所 有的数据都要在数据库运行着各种操作.所以先来学习LINQ to SQL,其它的都差不多了,那么就从Select说起吧,这个在编写程序中也最为常

LINQ to SQL语句Union/Intersect/Except介绍

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BegVCSharp_23_15_SetOperators { class Customer { public string ID { get; set; } public string City { get; set; } public string Country { get; set; } publi

LINQ to SQL语句(23)之动态查询

动态查询 有这样一个场景:应用程序可能会提供一个用户界面,用 户可以使用该用户界面指定一个或多个谓词来筛选数据.这种情况在编译时不知 道查询的细节,动态查询将十分有用. 在LINQ中,Lambda表达式是许多 标准查询运算符的基础,编译器创建lambda表达式以捕获基础查询方法(例如 Where.Select.Order By.Take While 以及其他方法)中定义的计算.表达式 目录树用于针对数据源的结构化查询,这些数据源实现IQueryable<T>. 例如,LINQ to SQL 提

LINQ to SQL语句(21)之用户定义函数

用户定义函数 我们可以在LINQ to SQL中使用用户定义函数.只要把 用户定义函数拖到O/R设计器中,LINQ to SQL自动使用FunctionAttribute属性 和ParameterAttribute属性(如果需要)将其函数指定为方法.这时,我们只需 简单调用即可. 在这里注意:使用用户定义函数的时候必须满足以下形 式之一,否则会出现InvalidOperationException异常情况. 具有正确映 射属性的方法调用的函数.这里使用FunctionAttribute属性和 P

LINQ to SQL语句(20)之存储过程

存储过程 在我们编写程序中,往往需要一些存储过程,在LINQ to SQL中 怎么使用呢?也许比原来的更简单些.下面我们以NORTHWND.MDF数据库中自带的 几个存储过程来理解一下. 1.标量返回 在数据库中,有名为 Customers Count By Region的存储过程.该存储过程返回顾客所在 "WA"区域的数量. ALTER PROCEDURE [dbo]. [NonRowset] (@param1 NVARCHAR(15)) AS BEGIN SET NOCOUNT O

LINQ to SQL语句(19)之ADO.NET与LINQ to SQL

ADO.NET与LINQ to SQL 它基于由 ADO.NET 提供程序模型提供的服务.因 此,我们可以将 LINQ to SQL 代码与现有的 ADO.NET 应用程序混合在一起,将 当前 ADO.NET 解决方案迁移到 LINQ to SQL. 1.连接 在创建 LINQ to SQL DataContext 时,可以提供现有 ADO.NET 连接.对 DataContext 的所 有操作(包括查询)都使用所提供的这个连接.如果此连接已经打开,则在您使 用完此连接时,LINQ to SQL