• 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

        );

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

  • 相关阅读:
    [bzoj1251]序列终结者
    Codeforces #Round 406(Div.2)
    [3.23校内训练赛]
    [APIO2009]
    [APIO2016]
    [bzoj1901]动态区间k大
    [9018/1904]火星商店
    [bzoj3673/3674可持久化并查集加强版]
    [bzoj1297][SCOI2009]迷路
    [bzoj1218][HNOI2003]激光炸弹
  • 原文地址:https://www.cnblogs.com/syyjay/p/3794563.html
Copyright © 2020-2023  润新知