加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

linq to entity 详解(查询)

(2011-08-17 15:09:20)
标签:

linq

to

entity

杂谈

分类: linqtoentity系列(非原创)
以Northwind为示例数据库,ADO.NET Entity Framework之Linq To Entities
  • Select - 选择需要返回的字段
  • Where - 筛选
  • OrderBy - 正序排序
  • OrderByDescending - 倒序排序
  • ThenBy - 在 OrderBy 或 OrderByDescending 的基础上再正序排序
  • ThenByDescending - 在 OrderBy 或 OrderByDescending 的基础上再倒序排序
  • GroupBy - 分组
  • Join - 连接
  • GroupJoin - 连接后分组


示例
Select
http://www.cnblogs.com/Images/OutliningIndicators/None.gifusing (var ctx = new NorthwindEntities())
http://www.cnblogs.com/Images/dot.gif
{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// Select 对应的 Linq 方法
http://www.cnblogs.com/Images/dot.gif
ProductName = "产品名称:" + p.ProductName });
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p1.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// Select 对应的查询语法
http://www.cnblogs.com/Images/dot.gif
ProductName = "产品名称:" + p.ProductName };
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p2.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}

Where
http://www.cnblogs.com/Images/OutliningIndicators/None.gifusing (var ctx = new NorthwindEntities())
http://www.cnblogs.com/Images/dot.gif
{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// Where 对应的 Linq 方法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p1 = ctx.Products.Where(p => p.ProductID > 3);
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p1.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// Where 对应的查询语法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p2 = from in ctx.Products where p.ProductID > 3 select p;
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p2.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}
http://www.cnblogs.com/Images/OutliningIndicators/None.gif--Where 对应的 sql 语句
http://www.cnblogs.com/Images/OutliningIndicators/None.gif

http://www.cnblogs.com/Images/OutliningIndicators/None.gif
SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
1 AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Extent1].[Discontinued] AS [Discontinued]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Extent1].[ProductID] AS [ProductID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Extent1].[ProductName] AS [ProductName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Extent1].[QuantityPerUnit] AS [QuantityPerUnit]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Extent1].[ReorderLevel] AS [ReorderLevel]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Extent1].[UnitPrice] AS [UnitPrice]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Extent1].[UnitsInStock] AS [UnitsInStock]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Extent1].[UnitsOnOrder] AS [UnitsOnOrder]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Extent1].[CategoryID] AS [CategoryID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Extent1].[SupplierID] AS [SupplierID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
FROM [dbo].[Products] AS [Extent1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
WHERE [Extent1].[ProductID] > 3

OrderBy
http://www.cnblogs.com/Images/OutliningIndicators/None.gifusing (var ctx = new NorthwindEntities())
http://www.cnblogs.com/Images/dot.gif
{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// OrderBy 对应的 Linq 方法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p1 = ctx.Products.OrderBy(p => p.UnitPrice);
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p1.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// OrderBy 对应的查询语法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p2 = from in ctx.Products orderby p.UnitPrice select p;
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p2.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}
http://www.cnblogs.com/Images/OutliningIndicators/None.gif--OrderBy 对应的 sql 语句
http://www.cnblogs.com/Images/OutliningIndicators/None.gif

http://www.cnblogs.com/Images/OutliningIndicators/None.gif
SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[C1] AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[Discontinued] AS [Discontinued]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[ProductID] AS [ProductID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[ProductName] AS [ProductName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[QuantityPerUnit] AS [QuantityPerUnit]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[ReorderLevel] AS [ReorderLevel]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[UnitPrice] AS [UnitPrice]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[UnitsInStock] AS [UnitsInStock]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[UnitsOnOrder] AS [UnitsOnOrder]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[CategoryID] AS [CategoryID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[SupplierID] AS [SupplierID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
FROM SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[CategoryID] AS [CategoryID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[Discontinued] AS [Discontinued]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[ProductID] AS [ProductID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[ProductName] AS [ProductName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[QuantityPerUnit] AS [QuantityPerUnit]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[ReorderLevel] AS [ReorderLevel]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[SupplierID] AS [SupplierID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[UnitPrice] AS [UnitPrice]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[UnitsInStock] AS [UnitsInStock]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[UnitsOnOrder] AS [UnitsOnOrder]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
1 AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
FROM [dbo].[Products] AS [Extent1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif 
AS [Project1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
ORDER BY [Project1].[UnitPrice] ASC

OrderByDescending
http://www.cnblogs.com/Images/OutliningIndicators/None.gifusing (var ctx = new NorthwindEntities())
http://www.cnblogs.com/Images/dot.gif
{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// OrderByDescending 对应的 Linq 方法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p1 = ctx.Products.OrderByDescending(p => p.UnitPrice);
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p1.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// OrderByDescending 对应的查询语法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p2 = from in ctx.Products orderby p.UnitPrice descending select p;
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p2.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}
http://www.cnblogs.com/Images/OutliningIndicators/None.gif--OrderByDescending 对应的 sql 语句
http://www.cnblogs.com/Images/OutliningIndicators/None.gif

http://www.cnblogs.com/Images/OutliningIndicators/None.gif
SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[C1] AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[Discontinued] AS [Discontinued]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[ProductID] AS [ProductID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[ProductName] AS [ProductName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[QuantityPerUnit] AS [QuantityPerUnit]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[ReorderLevel] AS [ReorderLevel]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[UnitPrice] AS [UnitPrice]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[UnitsInStock] AS [UnitsInStock]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[UnitsOnOrder] AS [UnitsOnOrder]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[CategoryID] AS [CategoryID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[SupplierID] AS [SupplierID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
FROM SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[CategoryID] AS [CategoryID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[Discontinued] AS [Discontinued]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[ProductID] AS [ProductID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[ProductName] AS [ProductName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[QuantityPerUnit] AS [QuantityPerUnit]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[ReorderLevel] AS [ReorderLevel]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[SupplierID] AS [SupplierID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[UnitPrice] AS [UnitPrice]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[UnitsInStock] AS [UnitsInStock]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[UnitsOnOrder] AS [UnitsOnOrder]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
1 AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
FROM [dbo].[Products] AS [Extent1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif 
AS [Project1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
ORDER BY [Project1].[UnitPrice] DESC

ThenBy
http://www.cnblogs.com/Images/OutliningIndicators/None.gifusing (var ctx = new NorthwindEntities())
http://www.cnblogs.com/Images/dot.gif
{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// ThenBy 对应的 Linq 方法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p1 = ctx.Products.OrderBy(p => p.UnitPrice).ThenBy(p => p.ProductID);
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p1.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// ThenBy 对应的查询语法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p2 = from in ctx.Products orderby p.UnitPrice ascending, p.ProductID ascending select p;
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p2.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}
http://www.cnblogs.com/Images/OutliningIndicators/None.gif--ThenBy 对应的 sql 语句
http://www.cnblogs.com/Images/OutliningIndicators/None.gif

http://www.cnblogs.com/Images/OutliningIndicators/None.gif
SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[C1] AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[Discontinued] AS [Discontinued]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[ProductID] AS [ProductID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[ProductName] AS [ProductName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[QuantityPerUnit] AS [QuantityPerUnit]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[ReorderLevel] AS [ReorderLevel]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[UnitPrice] AS [UnitPrice]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[UnitsInStock] AS [UnitsInStock]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[UnitsOnOrder] AS [UnitsOnOrder]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[CategoryID] AS [CategoryID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[SupplierID] AS [SupplierID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
FROM SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[CategoryID] AS [CategoryID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[Discontinued] AS [Discontinued]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[ProductID] AS [ProductID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[ProductName] AS [ProductName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[QuantityPerUnit] AS [QuantityPerUnit]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[ReorderLevel] AS [ReorderLevel]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[SupplierID] AS [SupplierID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[UnitPrice] AS [UnitPrice]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[UnitsInStock] AS [UnitsInStock]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[UnitsOnOrder] AS [UnitsOnOrder]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
1 AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
FROM [dbo].[Products] AS [Extent1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif 
AS [Project1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
ORDER BY [Project1].[UnitPrice] ASC[Project1].[ProductID] ASC

ThenByDescending
http://www.cnblogs.com/Images/OutliningIndicators/None.gifusing (var ctx = new NorthwindEntities())
http://www.cnblogs.com/Images/dot.gif
{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// ThenByDescending 对应的 Linq 方法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p1 = ctx.Products.OrderBy(p => p.UnitPrice).ThenByDescending(p => p.ProductID);
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p1.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// ThenByDescending 对应的查询语法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p2 = from in ctx.Products orderby p.UnitPrice ascending, p.ProductID descending select p;
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p2.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}
http://www.cnblogs.com/Images/OutliningIndicators/None.gif--ThenByDescending 对应的 sql 语句
http://www.cnblogs.com/Images/OutliningIndicators/None.gif

http://www.cnblogs.com/Images/OutliningIndicators/None.gif
SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[C1] AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[Discontinued] AS [Discontinued]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[ProductID] AS [ProductID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[ProductName] AS [ProductName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[QuantityPerUnit] AS [QuantityPerUnit]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[ReorderLevel] AS [ReorderLevel]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[UnitPrice] AS [UnitPrice]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[UnitsInStock] AS [UnitsInStock]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[UnitsOnOrder] AS [UnitsOnOrder]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[CategoryID] AS [CategoryID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[SupplierID] AS [SupplierID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
FROM SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[CategoryID] AS [CategoryID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[Discontinued] AS [Discontinued]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[ProductID] AS [ProductID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[ProductName] AS [ProductName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[QuantityPerUnit] AS [QuantityPerUnit]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[ReorderLevel] AS [ReorderLevel]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[SupplierID] AS [SupplierID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[UnitPrice] AS [UnitPrice]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[UnitsInStock] AS [UnitsInStock]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[UnitsOnOrder] AS [UnitsOnOrder]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
1 AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
FROM [dbo].[Products] AS [Extent1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif 
AS [Project1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
ORDER BY [Project1].[UnitPrice] ASC[Project1].[ProductID] DESC

GroupBy
http://www.cnblogs.com/Images/OutliningIndicators/None.gifusing (var ctx = new NorthwindEntities())
http://www.cnblogs.com/Images/dot.gif
{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// GroupBy 对应的 Linq 方法
http://www.cnblogs.com/Images/dot.gif
Group = g.Key, Member = });
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
foreach (var in p1)
http://www.cnblogs.com/Images/dot.gif
{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif        
// g.Group 供货商ID,以此分组
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif        
// g.Member 某供货商下的所有产品
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
        foreach (var in g.Member)
http://www.cnblogs.com/Images/dot.gif
{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif            
// code
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif
        }
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif    }

http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// GroupBy 对应的查询语法
http://www.cnblogs.com/Images/dot.gif
Group = g.Key, Member = };
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
foreach (var in p2)
http://www.cnblogs.com/Images/dot.gif
{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif        
// g.Group 供货商ID,以此分组
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif        
// g.Member 某供货商下的所有产品
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
        foreach (var in g.Member)
http://www.cnblogs.com/Images/dot.gif
{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif            
// code
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif
        }
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif    }

http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}
http://www.cnblogs.com/Images/OutliningIndicators/None.gif--GroupBy 对应的 sql 语句
http://www.cnblogs.com/Images/OutliningIndicators/None.gif

http://www.cnblogs.com/Images/OutliningIndicators/None.gif
SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[SupplierID] AS [SupplierID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[C1] AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[C2] AS [C2]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[C4] AS [C3]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[C3] AS [C4]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[Discontinued] AS [Discontinued]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[ProductID] AS [ProductID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[ProductName] AS [ProductName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[QuantityPerUnit] AS [QuantityPerUnit]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[ReorderLevel] AS [ReorderLevel]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[UnitPrice] AS [UnitPrice]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[UnitsInStock] AS [UnitsInStock]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[UnitsOnOrder] AS [UnitsOnOrder]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[CategoryID] AS [CategoryID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project2].[SupplierID1] AS [SupplierID1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
FROM SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Distinct1].[SupplierID] AS [SupplierID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
1 AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
1 AS [C2]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
CASE WHEN ([Extent2].[Discontinued] IS NULLTHEN CAST(NULL AS intELSE 1 END AS [C3]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent2].[CategoryID] AS [CategoryID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent2].[Discontinued] AS [Discontinued]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent2].[ProductID] AS [ProductID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent2].[ProductName] AS [ProductName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent2].[QuantityPerUnit] AS [QuantityPerUnit]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent2].[ReorderLevel] AS [ReorderLevel]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent2].[SupplierID] AS [SupplierID1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent2].[UnitPrice] AS [UnitPrice]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent2].[UnitsInStock] AS [UnitsInStock]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent2].[UnitsOnOrder] AS [UnitsOnOrder]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
CASE WHEN ([Extent2].[Discontinued] IS NULLTHEN CAST(NULL AS intELSE 1 END AS [C4]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
FROM   (SELECT DISTINCT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif        
[Extent1].[SupplierID] AS [SupplierID]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif        
FROM [dbo].[Products] AS [Extent1] AS [Distinct1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
LEFT OUTER JOIN [dbo].[Products] AS [Extent2] ON ([Extent2].[SupplierID] = [Distinct1].[SupplierID]OR (([Extent2].[SupplierID] IS NULLAND ([Distinct1].[SupplierID] IS NULL))
http://www.cnblogs.com/Images/OutliningIndicators/None.gif 
AS [Project2]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
ORDER BY [Project2].[SupplierID] ASC[Project2].[C4] ASC

Join
http://www.cnblogs.com/Images/OutliningIndicators/None.gifusing (var ctx = new NorthwindEntities())
http://www.cnblogs.com/Images/dot.gif
{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// Join 对应的 Linq 方法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p1 = ctx.Products.Join(
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif        ctx.Categories,
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif        
=> p.Categories.CategoryID,
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif        
=> c.CategoryID,
http://www.cnblogs.com/Images/dot.gif
c.CategoryName, p.ProductName });
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p1.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// Join 对应的查询语法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p2 = from in ctx.Products
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif             join 
in ctx.Categories
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif             on p.Categories.CategoryID equals c.CategoryID
http://www.cnblogs.com/Images/dot.gif
c.CategoryName, p.ProductName };
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p2.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}
http://www.cnblogs.com/Images/OutliningIndicators/None.gif--Join 对应的 sql 语句
http://www.cnblogs.com/Images/OutliningIndicators/None.gif

http://www.cnblogs.com/Images/OutliningIndicators/None.gif
SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
1 AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Extent2].[CategoryName] AS [CategoryName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Extent1].[ProductName] AS [ProductName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
FROM  [dbo].[Products] AS [Extent1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
INNER JOIN [dbo].[Categories] AS [Extent2] ON ([Extent1].[CategoryID] = [Extent2].[CategoryID]OR (([Extent1].[CategoryID] IS NULLAND ([Extent2].[CategoryID] IS NULL))

GroupJoin
http://www.cnblogs.com/Images/OutliningIndicators/None.gifusing (var ctx = new NorthwindEntities())
http://www.cnblogs.com/Images/dot.gif
{
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// GroupJoin 对应的 Linq 方法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p1 = ctx.Categories.GroupJoin(
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif        ctx.Products,
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif        
=> c.CategoryID,
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif        
=> p.Categories.CategoryID,
http://www.cnblogs.com/Images/dot.gif
p.CategoryName, ProductCount = g.Count() });
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p1.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    
// GroupJoin 对应的查询语法
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif
    var p2 = from in ctx.Categories
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif             join 
in ctx.Products
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif             on c.CategoryID equals p.Categories.CategoryID into 
// IEnumerable<Products>
http://www.cnblogs.com/Images/dot.gif
CategoryName = c.CategoryName, ProductCount = g.Count() };
http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif    p2.ToList();
http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif}
http://www.cnblogs.com/Images/OutliningIndicators/None.gif--GroupJoin 对应的 sql 语句
http://www.cnblogs.com/Images/OutliningIndicators/None.gif

http://www.cnblogs.com/Images/OutliningIndicators/None.gif
SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
1 AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[CategoryName] AS [CategoryName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
[Project1].[C1] AS [C2]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif
FROM SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
[Extent1].[CategoryName] AS [CategoryName]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    (
SELECT 
http://www.cnblogs.com/Images/OutliningIndicators/None.gif        
COUNT(cast(1 as bit)) AS [A1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif        
FROM [dbo].[Products] AS [Extent2]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif        
WHERE ([Extent1].[CategoryID] = [Extent2].[CategoryID]OR (([Extent1].[CategoryID] IS NULLAND ([Extent2].[CategoryID] IS NULL))) AS [C1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif    
FROM [dbo].[Categories] AS [Extent1]
http://www.cnblogs.com/Images/OutliningIndicators/None.gif 
AS [Project1]

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有