再接再厉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    
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    
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    
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    
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    
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    
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]
 
 

 


     本文转自webabcd 51CTO博客,原文链接:http://blog.51cto.com/webabcd/341457 ,如需转载请自行联系原作者


相关文章
|
1月前
|
数据可视化 网络协议 C#
C#/.NET/.NET Core优秀项目和框架2024年3月简报
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯🔔)。
|
3月前
|
开发框架 JavaScript 前端开发
5个.NET开源且强大的快速开发框架(帮助你提高生产效率)
5个.NET开源且强大的快速开发框架(帮助你提高生产效率)
111 4
|
7天前
|
人工智能 自然语言处理 算法
分享几个.NET开源的AI和LLM相关项目框架
分享几个.NET开源的AI和LLM相关项目框架
|
2月前
|
开发框架 网络协议 .NET
深入.net框架
深入.net框架
12 0
|
3月前
|
算法 BI API
C#/.NET/.NET Core优秀项目和框架2024年1月简报
C#/.NET/.NET Core优秀项目和框架2024年1月简报
|
3月前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
72 0
|
4月前
|
PHP Windows
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
php扩展com_dndnet(PHP与.NET框架进行交互)
|
4月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
46 0
|
15天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
21 0
|
2月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
32 0