liq to sql union

本文详细介绍了在编程中如何使用UnionAll、Union、Intersect等操作来处理集合数据,包括连接、合并、取交集等,并解释了Top/Bottom操作在数据处理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Union All/Union/Intersect操作

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

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
       );

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

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);

语句描述:查询出10个最贵的产品。

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页显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值