linq to sql 中Concat、Union、Intersect、Except

linq to sql 中Concat、Union、Intersect、Except

一、linq to sql 之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
             }
            );
    
    		
  •  

    二、linq to sql 之Union

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

    实例

    查询顾客和职员所在的国家

  • 
    var q = (
             from c in db.Customers
             select c.Country
            ).Union(
             from e in db.Employees
             select e.Country
            );
    
    		
  • 三、linq to sql 之Intersect

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

    实例

    查询顾客和职员同在的国家

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

    四、linq to sql 之Except

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

    实例

    查询顾客和职员不同的国家

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