再接再厉VS 2008 sp1 + .NET 3.5 sp1(2) - Entity Framework(实体框架)之详解 Linq To Entities 之一

[索引页]
[源码下载]


再接再厉VS 2008 sp1 + .NET 3.5 sp1(2) - Entity Framework(实体框架)之详解 Linq To Entities 之一


作者: webabcd


介绍
以Northwind为示例数据库,ADO.NET Entity Framework之Linq To Entities
  • First - 返回集合中的第一个成员;不延迟
  • FirstOrDefault - 返回集合中的第一个成员(找不到则返回null);不延迟
  • All - 是否集合中所有成员都满足某一条件;不延迟
  • Any - 集合中是否有成员满足某一条件;不延迟
  • Average - 取平均值;不延迟
  • Sum - 求和;不延迟
  • Max - 取最大值;不延迟
  • Min - 取最小值;不延迟
  • Count - 取指定集合的成员数,返回值类型int;不延迟
  • LongCount - 取指定集合的成员数,返回值类型long;不延迟
  • Take - 获取集合的前 n 个成员;延迟
  • Skip - 跳过集合的前 n 个成员;延迟(Linq To Entities 需要先排序才能 Skip)
  • Distinct - 过滤集合中的相同项;延迟
  • Union - 连接不同集合,自动过滤相同项;延迟
  • UnionAll - 连接不同集合,不会自动过滤相同项;延迟
  • Concat - 连接不同集合,不会自动过滤相同项;延迟
  • Intersect - 获取不同集合的相同项(交集);延迟
  • Except - 从某集合中删除其与另一个集合中相同的项;延迟


示例
First
using  (var ctx  =   new  NorthwindEntities())
{
    Products first 
= ctx.Products.First(p => p.ProductID > 3);
}
SELECT  
[ Limit1 ] . [ C1 ]   AS   [ C1 ]
[ Limit1 ] . [ Discontinued ]   AS   [ Discontinued ]
[ Limit1 ] . [ ProductID ]   AS   [ ProductID ]
[ Limit1 ] . [ ProductName ]   AS   [ ProductName ]
[ Limit1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
[ Limit1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
[ Limit1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
[ Limit1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
[ Limit1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
[ Limit1 ] . [ CategoryID ]   AS   [ CategoryID ]
[ Limit1 ] . [ SupplierID ]   AS   [ SupplierID ]
FROM  (  SELECT   TOP  ( 1
    
[ Extent1 ] . [ CategoryID ]   AS   [ CategoryID ]
    
[ Extent1 ] . [ Discontinued ]   AS   [ Discontinued ]
    
[ Extent1 ] . [ ProductID ]   AS   [ ProductID ]
    
[ Extent1 ] . [ ProductName ]   AS   [ ProductName ]
    
[ Extent1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
    
[ Extent1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
    
[ Extent1 ] . [ SupplierID ]   AS   [ SupplierID ]
    
[ Extent1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
    
[ Extent1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
    
[ Extent1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
    
1   AS   [ C1 ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]
    
WHERE   [ Extent1 ] . [ ProductID ]   >   3
)  
AS   [ Limit1 ]

FirstOrDefault
using  (var ctx  =   new  NorthwindEntities())
{
    Products firstOrDefault 
= ctx.Products.FirstOrDefault(p => p.ProductID > 100);
}
SELECT  
[ Limit1 ] . [ C1 ]   AS   [ C1 ]
[ Limit1 ] . [ Discontinued ]   AS   [ Discontinued ]
[ Limit1 ] . [ ProductID ]   AS   [ ProductID ]
[ Limit1 ] . [ ProductName ]   AS   [ ProductName ]
[ Limit1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
[ Limit1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
[ Limit1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
[ Limit1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
[ Limit1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
[ Limit1 ] . [ CategoryID ]   AS   [ CategoryID ]
[ Limit1 ] . [ SupplierID ]   AS   [ SupplierID ]
FROM  (  SELECT   TOP  ( 1
    
[ Extent1 ] . [ CategoryID ]   AS   [ CategoryID ]
    
[ Extent1 ] . [ Discontinued ]   AS   [ Discontinued ]
    
[ Extent1 ] . [ ProductID ]   AS   [ ProductID ]
    
[ Extent1 ] . [ ProductName ]   AS   [ ProductName ]
    
[ Extent1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
    
[ Extent1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
    
[ Extent1 ] . [ SupplierID ]   AS   [ SupplierID ]
    
[ Extent1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
    
[ Extent1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
    
[ Extent1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
    
1   AS   [ C1 ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]
    
WHERE   [ Extent1 ] . [ ProductID ]   >   100
)  
AS   [ Limit1 ]

All
using  (var ctx  =   new  NorthwindEntities())
{
    
bool all = ctx.Products.All(p => p.ProductID > 3);
}
SELECT  
CASE   WHEN  (  NOT   EXISTS  ( SELECT  
    
cast ( 1   as   bit AS   [ C1 ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]
    
WHERE  (  NOT  ( [ Extent1 ] . [ ProductID ]   >   3 ))  OR  ( CASE   WHEN  ( [ Extent1 ] . [ ProductID ]   >   3 THEN   cast ( 1   as   bit WHEN  (  NOT  ( [ Extent1 ] . [ ProductID ]   >   3 ))  THEN   cast ( 0   as   bit END   IS   NULL )
)) 
THEN   cast ( 1   as   bit WHEN  (  EXISTS  ( SELECT  
    
cast ( 1   as   bit AS   [ C1 ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent2 ]
    
WHERE  (  NOT  ( [ Extent2 ] . [ ProductID ]   >   3 ))  OR  ( CASE   WHEN  ( [ Extent2 ] . [ ProductID ]   >   3 THEN   cast ( 1   as   bit WHEN  (  NOT  ( [ Extent2 ] . [ ProductID ]   >   3 ))  THEN   cast ( 0   as   bit END   IS   NULL )
)) 
THEN   cast ( 0   as   bit END   AS   [ C1 ]
FROM   (  SELECT   cast ( 1   as   bit AS  X )  AS   [ SingleRowTable1 ]

Any
using  (var ctx  =   new  NorthwindEntities())
{
    
bool any = ctx.Products.Any(p => p.ProductID > 3);
}
SELECT  
CASE   WHEN  (  EXISTS  ( SELECT  
    
cast ( 1   as   bit AS   [ C1 ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]
    
WHERE   [ Extent1 ] . [ ProductID ]   >   3
)) 
THEN   cast ( 1   as   bit WHEN  (  NOT   EXISTS  ( SELECT  
    
cast ( 1   as   bit AS   [ C1 ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent2 ]
    
WHERE   [ Extent2 ] . [ ProductID ]   >   3
)) 
THEN   cast ( 0   as   bit END   AS   [ C1 ]
FROM   (  SELECT   cast ( 1   as   bit AS  X )  AS   [ SingleRowTable1 ]

Average
using  (var ctx  =   new  NorthwindEntities())
{
    
decimal? average = ctx.Products.Average(p => p.UnitPrice);
}
SELECT  
[ GroupBy1 ] . [ A1 ]   AS   [ C1 ]
FROM    (  SELECT   cast ( 1   as   bit AS  X )  AS   [ SingleRowTable1 ]
LEFT   OUTER   JOIN   ( SELECT  
    
AVG ( [ Extent1 ] . [ UnitPrice ] AS   [ A1 ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]  )  AS   [ GroupBy1 ]   ON   1   =   1  

Sum
using  (var ctx  =   new  NorthwindEntities())
{
    
decimal? sum = ctx.Products.Sum(p => p.UnitPrice);
}
SELECT  
[ GroupBy1 ] . [ A1 ]   AS   [ C1 ]
FROM    (  SELECT   cast ( 1   as   bit AS  X )  AS   [ SingleRowTable1 ]
LEFT   OUTER   JOIN   ( SELECT  
    
SUM ( [ Extent1 ] . [ UnitPrice ] AS   [ A1 ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]  )  AS   [ GroupBy1 ]   ON   1   =   1

Max
using  (var ctx  =   new  NorthwindEntities())
{
    
decimal? max = ctx.Products.Max(p => p.UnitPrice);
}
SELECT  
[ GroupBy1 ] . [ A1 ]   AS   [ C1 ]
FROM    (  SELECT   cast ( 1   as   bit AS  X )  AS   [ SingleRowTable1 ]
LEFT   OUTER   JOIN   ( SELECT  
    
MAX ( [ Extent1 ] . [ UnitPrice ] AS   [ A1 ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]  )  AS   [ GroupBy1 ]   ON   1   =   1

Min
using  (var ctx  =   new  NorthwindEntities())
{
    
decimal? min = ctx.Products.Min(p => p.UnitPrice);
}
SELECT  
[ GroupBy1 ] . [ A1 ]   AS   [ C1 ]
FROM    (  SELECT   cast ( 1   as   bit AS  X )  AS   [ SingleRowTable1 ]
LEFT   OUTER   JOIN   ( SELECT  
    
MIN ( [ Extent1 ] . [ UnitPrice ] AS   [ A1 ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]  )  AS   [ GroupBy1 ]   ON   1   =   1  

Count
using  (var ctx  =   new  NorthwindEntities())
{
    
int count = ctx.Products.Count(p => p.ProductID > 3);
}
SELECT  
[ GroupBy1 ] . [ A1 ]   AS   [ C1 ]
FROM    (  SELECT   cast ( 1   as   bit AS  X )  AS   [ SingleRowTable1 ]
LEFT   OUTER   JOIN   ( SELECT  
    
COUNT ( cast ( 1   as   bit ))  AS   [ A1 ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]
    
WHERE   [ Extent1 ] . [ ProductID ]   >   3  )  AS   [ GroupBy1 ]   ON   1   =   1  

LongCount
using  (var ctx  =   new  NorthwindEntities())
{
    
long longCount = ctx.Products.LongCount(p => p.ProductID > 3);
}
SELECT  
[ GroupBy1 ] . [ A1 ]   AS   [ C1 ]
FROM    (  SELECT   cast ( 1   as   bit AS  X )  AS   [ SingleRowTable1 ]
LEFT   OUTER   JOIN   ( SELECT  
    COUNT_BIG(
cast ( 1   as   bit ))  AS   [ A1 ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]
    
WHERE   [ Extent1 ] . [ ProductID ]   >   3  )  AS   [ GroupBy1 ]   ON   1   =   1  

Take
using  (var ctx  =   new  NorthwindEntities())
{
    IQueryable
<Products> take = ctx.Products.Take(3);
    take.ToList();
}
SELECT  
[ Limit1 ] . [ C1 ]   AS   [ C1 ]
[ Limit1 ] . [ Discontinued ]   AS   [ Discontinued ]
[ Limit1 ] . [ ProductID ]   AS   [ ProductID ]
[ Limit1 ] . [ ProductName ]   AS   [ ProductName ]
[ Limit1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
[ Limit1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
[ Limit1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
[ Limit1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
[ Limit1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
[ Limit1 ] . [ CategoryID ]   AS   [ CategoryID ]
[ Limit1 ] . [ SupplierID ]   AS   [ SupplierID ]
FROM  (  SELECT   TOP  ( 3
    
[ Extent1 ] . [ CategoryID ]   AS   [ CategoryID ]
    
[ Extent1 ] . [ Discontinued ]   AS   [ Discontinued ]
    
[ Extent1 ] . [ ProductID ]   AS   [ ProductID ]
    
[ Extent1 ] . [ ProductName ]   AS   [ ProductName ]
    
[ Extent1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
    
[ Extent1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
    
[ Extent1 ] . [ SupplierID ]   AS   [ SupplierID ]
    
[ Extent1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
    
[ Extent1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
    
[ Extent1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
    
1   AS   [ C1 ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]
)  
AS   [ Limit1 ]

Skip
using  (var ctx  =   new  NorthwindEntities())
{
    IQueryable
<Products> skip = ctx.Products.OrderBy(p => p.UnitPrice).Skip(3);
    skip.ToList();
}
SELECT  
[ Project1 ] . [ C1 ]   AS   [ C1 ]
[ Project1 ] . [ Discontinued ]   AS   [ Discontinued ]
[ Project1 ] . [ ProductID ]   AS   [ ProductID ]
[ Project1 ] . [ ProductName ]   AS   [ ProductName ]
[ Project1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
[ Project1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
[ Project1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
[ Project1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
[ Project1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
[ Project1 ] . [ CategoryID ]   AS   [ CategoryID ]
[ Project1 ] . [ SupplierID ]   AS   [ SupplierID ]
FROM  (  SELECT   [ Project1 ] . [ CategoryID ]   AS   [ CategoryID ] [ Project1 ] . [ Discontinued ]   AS   [ Discontinued ] [ Project1 ] . [ ProductID ]   AS   [ ProductID ] [ Project1 ] . [ ProductName ]   AS   [ ProductName ] [ Project1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ] [ Project1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ] [ Project1 ] . [ SupplierID ]   AS   [ SupplierID ] [ Project1 ] . [ UnitPrice ]   AS   [ UnitPrice ] [ Project1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ] [ Project1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ] [ Project1 ] . [ C1 ]   AS   [ C1 ] , row_number()  OVER  ( ORDER   BY   [ Project1 ] . [ UnitPrice ]   ASC AS   [ row_number ]
    
FROM  (  SELECT  
        
[ Extent1 ] . [ CategoryID ]   AS   [ CategoryID ]
        
[ Extent1 ] . [ Discontinued ]   AS   [ Discontinued ]
        
[ Extent1 ] . [ ProductID ]   AS   [ ProductID ]
        
[ Extent1 ] . [ ProductName ]   AS   [ ProductName ]
        
[ Extent1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
        
[ Extent1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
        
[ Extent1 ] . [ SupplierID ]   AS   [ SupplierID ]
        
[ Extent1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
        
[ Extent1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
        
[ Extent1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
        
1   AS   [ C1 ]
        
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]
    )  
AS   [ Project1 ]
)  
AS   [ Project1 ]
WHERE   [ Project1 ] . [ row_number ]   >   3
ORDER   BY   [ Project1 ] . [ UnitPrice ]   ASC  

Distinct 
using  (var ctx  =   new  NorthwindEntities())
{
    ObjectQuery
<Products> distinct = ctx.Products.Distinct();
    distinct.ToList();
}
SELECT  
1   AS   [ C1 ]
[ Extent1 ] . [ Discontinued ]   AS   [ Discontinued ]
[ Extent1 ] . [ ProductID ]   AS   [ ProductID ]
[ Extent1 ] . [ ProductName ]   AS   [ ProductName ]
[ Extent1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
[ Extent1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
[ Extent1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
[ Extent1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
[ Extent1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
[ Extent1 ] . [ CategoryID ]   AS   [ CategoryID ]
[ Extent1 ] . [ SupplierID ]   AS   [ SupplierID ]
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]  

Union
using  (var ctx  =   new  NorthwindEntities())
{
    ObjectQuery
<Products> union = ctx.Products.Union(ctx.Products);
    union.ToList();
}
SELECT  
1   AS   [ C1 ]
[ Distinct1 ] . [ C1 ]   AS   [ C2 ]
[ Distinct1 ] . [ C2 ]   AS   [ C3 ]
[ Distinct1 ] . [ C3 ]   AS   [ C4 ]
[ Distinct1 ] . [ C4 ]   AS   [ C5 ]
[ Distinct1 ] . [ C5 ]   AS   [ C6 ]
[ Distinct1 ] . [ C6 ]   AS   [ C7 ]
[ Distinct1 ] . [ C7 ]   AS   [ C8 ]
[ Distinct1 ] . [ C8 ]   AS   [ C9 ]
[ Distinct1 ] . [ C9 ]   AS   [ C10 ]
[ Distinct1 ] . [ C10 ]   AS   [ C11 ]
FROM  (  SELECT   DISTINCT  
    
[ UnionAll1 ] . [ Discontinued ]   AS   [ C1 ]
    
[ UnionAll1 ] . [ ProductID ]   AS   [ C2 ]
    
[ UnionAll1 ] . [ ProductName ]   AS   [ C3 ]
    
[ UnionAll1 ] . [ QuantityPerUnit ]   AS   [ C4 ]
    
[ UnionAll1 ] . [ ReorderLevel ]   AS   [ C5 ]
    
[ UnionAll1 ] . [ UnitPrice ]   AS   [ C6 ]
    
[ UnionAll1 ] . [ UnitsInStock ]   AS   [ C7 ]
    
[ UnionAll1 ] . [ UnitsOnOrder ]   AS   [ C8 ]
    
[ UnionAll1 ] . [ CategoryID ]   AS   [ C9 ]
    
[ UnionAll1 ] . [ SupplierID ]   AS   [ C10 ]
    
FROM   ( SELECT  
        
[ Extent1 ] . [ Discontinued ]   AS   [ Discontinued ]
        
[ Extent1 ] . [ ProductID ]   AS   [ ProductID ]
        
[ Extent1 ] . [ ProductName ]   AS   [ ProductName ]
        
[ Extent1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
        
[ Extent1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
        
[ Extent1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
        
[ Extent1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
        
[ Extent1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
        
[ Extent1 ] . [ CategoryID ]   AS   [ CategoryID ]
        
[ Extent1 ] . [ SupplierID ]   AS   [ SupplierID ]
        
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]
    
UNION   ALL
        
SELECT  
        
[ Extent2 ] . [ Discontinued ]   AS   [ Discontinued ]
        
[ Extent2 ] . [ ProductID ]   AS   [ ProductID ]
        
[ Extent2 ] . [ ProductName ]   AS   [ ProductName ]
        
[ Extent2 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
        
[ Extent2 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
        
[ Extent2 ] . [ UnitPrice ]   AS   [ UnitPrice ]
        
[ Extent2 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
        
[ Extent2 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
        
[ Extent2 ] . [ CategoryID ]   AS   [ CategoryID ]
        
[ Extent2 ] . [ SupplierID ]   AS   [ SupplierID ]
        
FROM   [ dbo ] . [ Products ]   AS   [ Extent2 ] AS   [ UnionAll1 ]
)  
AS   [ Distinct1 ]

UnionAll
using  (var ctx  =   new  NorthwindEntities())
{
    ObjectQuery
<Products> unionAll = ctx.Products.UnionAll(ctx.Products);
    unionAll.ToList();
}
SELECT  
1   AS   [ C1 ]
[ UnionAll1 ] . [ Discontinued ]   AS   [ C2 ]
[ UnionAll1 ] . [ ProductID ]   AS   [ C3 ]
[ UnionAll1 ] . [ ProductName ]   AS   [ C4 ]
[ UnionAll1 ] . [ QuantityPerUnit ]   AS   [ C5 ]
[ UnionAll1 ] . [ ReorderLevel ]   AS   [ C6 ]
[ UnionAll1 ] . [ UnitPrice ]   AS   [ C7 ]
[ UnionAll1 ] . [ UnitsInStock ]   AS   [ C8 ]
[ UnionAll1 ] . [ UnitsOnOrder ]   AS   [ C9 ]
[ UnionAll1 ] . [ CategoryID ]   AS   [ C10 ]
[ UnionAll1 ] . [ SupplierID ]   AS   [ C11 ]
FROM   ( SELECT  
    
[ Extent1 ] . [ Discontinued ]   AS   [ Discontinued ]
    
[ Extent1 ] . [ ProductID ]   AS   [ ProductID ]
    
[ Extent1 ] . [ ProductName ]   AS   [ ProductName ]
    
[ Extent1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
    
[ Extent1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
    
[ Extent1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
    
[ Extent1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
    
[ Extent1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
    
[ Extent1 ] . [ CategoryID ]   AS   [ CategoryID ]
    
[ Extent1 ] . [ SupplierID ]   AS   [ SupplierID ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]
UNION   ALL
    
SELECT  
    
[ Extent2 ] . [ Discontinued ]   AS   [ Discontinued ]
    
[ Extent2 ] . [ ProductID ]   AS   [ ProductID ]
    
[ Extent2 ] . [ ProductName ]   AS   [ ProductName ]
    
[ Extent2 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
    
[ Extent2 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
    
[ Extent2 ] . [ UnitPrice ]   AS   [ UnitPrice ]
    
[ Extent2 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
    
[ Extent2 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
    
[ Extent2 ] . [ CategoryID ]   AS   [ CategoryID ]
    
[ Extent2 ] . [ SupplierID ]   AS   [ SupplierID ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent2 ] AS   [ UnionAll1 ]

Concat
using  (var ctx  =   new  NorthwindEntities())
{
    IQueryable
<Products> concat = ctx.Products.Concat(ctx.Products);
    concat.ToList();
}
SELECT  
1   AS   [ C1 ]
[ UnionAll1 ] . [ Discontinued ]   AS   [ C2 ]
[ UnionAll1 ] . [ ProductID ]   AS   [ C3 ]
[ UnionAll1 ] . [ ProductName ]   AS   [ C4 ]
[ UnionAll1 ] . [ QuantityPerUnit ]   AS   [ C5 ]
[ UnionAll1 ] . [ ReorderLevel ]   AS   [ C6 ]
[ UnionAll1 ] . [ UnitPrice ]   AS   [ C7 ]
[ UnionAll1 ] . [ UnitsInStock ]   AS   [ C8 ]
[ UnionAll1 ] . [ UnitsOnOrder ]   AS   [ C9 ]
[ UnionAll1 ] . [ CategoryID ]   AS   [ C10 ]
[ UnionAll1 ] . [ SupplierID ]   AS   [ C11 ]
FROM   ( SELECT  
    
[ Extent1 ] . [ Discontinued ]   AS   [ Discontinued ]
    
[ Extent1 ] . [ ProductID ]   AS   [ ProductID ]
    
[ Extent1 ] . [ ProductName ]   AS   [ ProductName ]
    
[ Extent1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
    
[ Extent1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
    
[ Extent1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
    
[ Extent1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
    
[ Extent1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
    
[ Extent1 ] . [ CategoryID ]   AS   [ CategoryID ]
    
[ Extent1 ] . [ SupplierID ]   AS   [ SupplierID ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]
UNION   ALL
    
SELECT  
    
[ Extent2 ] . [ Discontinued ]   AS   [ Discontinued ]
    
[ Extent2 ] . [ ProductID ]   AS   [ ProductID ]
    
[ Extent2 ] . [ ProductName ]   AS   [ ProductName ]
    
[ Extent2 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
    
[ Extent2 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
    
[ Extent2 ] . [ UnitPrice ]   AS   [ UnitPrice ]
    
[ Extent2 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
    
[ Extent2 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
    
[ Extent2 ] . [ CategoryID ]   AS   [ CategoryID ]
    
[ Extent2 ] . [ SupplierID ]   AS   [ SupplierID ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent2 ] AS   [ UnionAll1 ]

Intersect
using  (var ctx  =   new  NorthwindEntities())
{
    ObjectQuery
<Products> intersect = ctx.Products.Intersect(ctx.Products);
    intersect.ToList();
}
SELECT  
1   AS   [ C1 ]
[ Intersect1 ] . [ Discontinued ]   AS   [ C2 ]
[ Intersect1 ] . [ ProductID ]   AS   [ C3 ]
[ Intersect1 ] . [ ProductName ]   AS   [ C4 ]
[ Intersect1 ] . [ QuantityPerUnit ]   AS   [ C5 ]
[ Intersect1 ] . [ ReorderLevel ]   AS   [ C6 ]
[ Intersect1 ] . [ UnitPrice ]   AS   [ C7 ]
[ Intersect1 ] . [ UnitsInStock ]   AS   [ C8 ]
[ Intersect1 ] . [ UnitsOnOrder ]   AS   [ C9 ]
[ Intersect1 ] . [ CategoryID ]   AS   [ C10 ]
[ Intersect1 ] . [ SupplierID ]   AS   [ C11 ]
FROM   ( SELECT  
    
[ Extent1 ] . [ Discontinued ]   AS   [ Discontinued ]
    
[ Extent1 ] . [ ProductID ]   AS   [ ProductID ]
    
[ Extent1 ] . [ ProductName ]   AS   [ ProductName ]
    
[ Extent1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
    
[ Extent1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
    
[ Extent1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
    
[ Extent1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
    
[ Extent1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
    
[ Extent1 ] . [ CategoryID ]   AS   [ CategoryID ]
    
[ Extent1 ] . [ SupplierID ]   AS   [ SupplierID ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]
INTERSECT
    
SELECT  
    
[ Extent2 ] . [ Discontinued ]   AS   [ Discontinued ]
    
[ Extent2 ] . [ ProductID ]   AS   [ ProductID ]
    
[ Extent2 ] . [ ProductName ]   AS   [ ProductName ]
    
[ Extent2 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
    
[ Extent2 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
    
[ Extent2 ] . [ UnitPrice ]   AS   [ UnitPrice ]
    
[ Extent2 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
    
[ Extent2 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
    
[ Extent2 ] . [ CategoryID ]   AS   [ CategoryID ]
    
[ Extent2 ] . [ SupplierID ]   AS   [ SupplierID ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent2 ] AS   [ Intersect1 ]  

Except
using  (var ctx  =   new  NorthwindEntities())
{
    ObjectQuery
<Products> except = ctx.Products.Except(ctx.Products);
    except.ToList();
}
SELECT  
1   AS   [ C1 ]
[ Except1 ] . [ Discontinued ]   AS   [ C2 ]
[ Except1 ] . [ ProductID ]   AS   [ C3 ]
[ Except1 ] . [ ProductName ]   AS   [ C4 ]
[ Except1 ] . [ QuantityPerUnit ]   AS   [ C5 ]
[ Except1 ] . [ ReorderLevel ]   AS   [ C6 ]
[ Except1 ] . [ UnitPrice ]   AS   [ C7 ]
[ Except1 ] . [ UnitsInStock ]   AS   [ C8 ]
[ Except1 ] . [ UnitsOnOrder ]   AS   [ C9 ]
[ Except1 ] . [ CategoryID ]   AS   [ C10 ]
[ Except1 ] . [ SupplierID ]   AS   [ C11 ]
FROM   ( SELECT  
    
[ Extent1 ] . [ Discontinued ]   AS   [ Discontinued ]
    
[ Extent1 ] . [ ProductID ]   AS   [ ProductID ]
    
[ Extent1 ] . [ ProductName ]   AS   [ ProductName ]
    
[ Extent1 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
    
[ Extent1 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
    
[ Extent1 ] . [ UnitPrice ]   AS   [ UnitPrice ]
    
[ Extent1 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
    
[ Extent1 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
    
[ Extent1 ] . [ CategoryID ]   AS   [ CategoryID ]
    
[ Extent1 ] . [ SupplierID ]   AS   [ SupplierID ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent1 ]
EXCEPT
    
SELECT  
    
[ Extent2 ] . [ Discontinued ]   AS   [ Discontinued ]
    
[ Extent2 ] . [ ProductID ]   AS   [ ProductID ]
    
[ Extent2 ] . [ ProductName ]   AS   [ ProductName ]
    
[ Extent2 ] . [ QuantityPerUnit ]   AS   [ QuantityPerUnit ]
    
[ Extent2 ] . [ ReorderLevel ]   AS   [ ReorderLevel ]
    
[ Extent2 ] . [ UnitPrice ]   AS   [ UnitPrice ]
    
[ Extent2 ] . [ UnitsInStock ]   AS   [ UnitsInStock ]
    
[ Extent2 ] . [ UnitsOnOrder ]   AS   [ UnitsOnOrder ]
    
[ Extent2 ] . [ CategoryID ]   AS   [ CategoryID ]
    
[ Extent2 ] . [ SupplierID ]   AS   [ SupplierID ]
    
FROM   [ dbo ] . [ Products ]   AS   [ Extent2 ] AS   [ Except1 ]  


OK
[源码下载]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值