博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LINQ系列:LINQ to SQL Transact-SQL函数
阅读量:7053 次
发布时间:2019-06-28

本文共 6057 字,大约阅读时间需要 20 分钟。

1. CASE WHEN ... THEN ...

var expr = from p in context.Products            select new             {                 商品ID = p.ProductID,                 商品名称 = p.ProductName,                 是否库存 = p.UnitsInStock > 0 ? "是" : "否"             };
SELECT     [Extent1].[ProductID] AS [ProductID],     [Extent1].[ProductName] AS [ProductName],     CASE WHEN ([Extent1].[UnitsInStock] > 0) THEN N'是' ELSE N'否' END AS [C1]    FROM [dbo].[Product] AS [Extent1]

2. Distinct

var expr = context.Products    .Select(p => p.CategoryID)    .Distinct();
SELECT     [Distinct1].[CategoryID] AS [CategoryID]    FROM ( SELECT DISTINCT         [Extent1].[CategoryID] AS [CategoryID]        FROM [dbo].[Product] AS [Extent1]    )  AS [Distinct1]

3. Count

var expr = context.Products.Count();
SELECT     [GroupBy1].[A1] AS [C1]    FROM ( SELECT         COUNT(1) AS [A1]        FROM [dbo].[Product] AS [Extent1]    )  AS [GroupBy1]
var expr = context.Products    .Count(p => p.UnitPrice > 10m);
SELECT     [GroupBy1].[A1] AS [C1]    FROM ( SELECT         COUNT(1) AS [A1]        FROM [dbo].[Product] AS [Extent1]        WHERE [Extent1].[UnitPrice] > cast(10 as decimal(18))    )  AS [GroupBy1]

4. LongCount

var expr = context.Products.LongCount();
SELECT     [GroupBy1].[A1] AS [C1]    FROM ( SELECT         COUNT_BIG(1) AS [A1]        FROM [dbo].[Product] AS [Extent1]    )  AS [GroupBy1]
var expr = context.Products    .LongCount(p => p.UnitPrice > 10m);
SELECT     [GroupBy1].[A1] AS [C1]    FROM ( SELECT         COUNT_BIG(1) AS [A1]        FROM [dbo].[Product] AS [Extent1]        WHERE [Extent1].[UnitPrice] > cast(10 as decimal(18))    )  AS [GroupBy1]

5. Sum

var expr = context.Products    .Select(p=>p.UnitsInStock)    .Sum();
var expr = context.Products    .Sum(p => p.UnitsInStock);
SELECT     [GroupBy1].[A1] AS [C1]    FROM ( SELECT         SUM([Extent1].[UnitsInStock]) AS [A1]        FROM [dbo].[Product] AS [Extent1]    )  AS [GroupBy1]

6. Min

var expr = context.Products    .Min(p => p.UnitPrice);
var expr = context.Products    .Select(p => p.UnitPrice)    .Min();
SELECT     [GroupBy1].[A1] AS [C1]    FROM ( SELECT         MIN([Extent1].[UnitPrice]) AS [A1]        FROM [dbo].[Product] AS [Extent1]    )  AS [GroupBy1]

  查找每个类别中单价最低的商品:

var expr = from p in context.Products            group p by p.CategoryID into g            select new            {                CategoryID = g.Key,                CheapestProducts = from p2 in g                                    where p2.UnitPrice == g.Min(p3 => p3.UnitPrice)                                    select p2            };
SELECT     [Project1].[CategoryID] AS [CategoryID],     [Project1].[C1] AS [C1],     [Project1].[ProductID] AS [ProductID],     [Project1].[CategoryID1] AS [CategoryID1],     [Project1].[ProductName] AS [ProductName],     [Project1].[UnitPrice] AS [UnitPrice],     [Project1].[UnitsInStock] AS [UnitsInStock],     [Project1].[Discontinued] AS [Discontinued]    FROM ( SELECT         [GroupBy1].[K1] AS [CategoryID],         [Extent2].[ProductID] AS [ProductID],         [Extent2].[CategoryID] AS [CategoryID1],         [Extent2].[ProductName] AS [ProductName],         [Extent2].[UnitPrice] AS [UnitPrice],         [Extent2].[UnitsInStock] AS [UnitsInStock],         [Extent2].[Discontinued] AS [Discontinued],         CASE WHEN ([Extent2].[ProductID] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1]        FROM   (SELECT             [Extent1].[CategoryID] AS [K1],             MIN([Extent1].[UnitPrice]) AS [A1]            FROM [dbo].[Product] AS [Extent1]            GROUP BY [Extent1].[CategoryID] ) AS [GroupBy1]        LEFT OUTER JOIN [dbo].[Product] AS [Extent2] ON ([GroupBy1].[K1] = [Extent2].[CategoryID]) AND ([Extent2].[UnitPrice] = [GroupBy1].[A1])    )  AS [Project1]    ORDER BY [Project1].[CategoryID] ASC, [Project1].[C1] ASC

7. Max

var expr = context.Products    .Max(p => p.UnitPrice);
var expr = context.Products    .Select(p => p.UnitPrice)    .Max();
SELECT     [GroupBy1].[A1] AS [C1]    FROM ( SELECT         MAX([Extent1].[UnitPrice]) AS [A1]        FROM [dbo].[Product] AS [Extent1]    )  AS [GroupBy1]

8.Avg

var expr = context.Products    .Select(p => p.UnitPrice)    .Average();
var expr = context.Products    .Average(p => p.UnitPrice);
SELECT     [GroupBy1].[A1] AS [C1]    FROM ( SELECT         AVG([Extent1].[UnitPrice]) AS [A1]        FROM [dbo].[Product] AS [Extent1]    )  AS [GroupBy1]

  查找单个类别中单价高于平均价的产品:

var expr = from p in context.Products            group p by p.CategoryID into g            select new            {                CategoryID = g.Key,                ExpensiveProducts = from p2 in g                                    where p2.UnitPrice > g.Average(p3 => p3.UnitPrice)                                    select p2            };
SELECT     [Project1].[CategoryID] AS [CategoryID],     [Project1].[C1] AS [C1],     [Project1].[ProductID] AS [ProductID],     [Project1].[CategoryID1] AS [CategoryID1],     [Project1].[ProductName] AS [ProductName],     [Project1].[UnitPrice] AS [UnitPrice],     [Project1].[UnitsInStock] AS [UnitsInStock],     [Project1].[Discontinued] AS [Discontinued]    FROM ( SELECT         [GroupBy1].[K1] AS [CategoryID],         [Extent2].[ProductID] AS [ProductID],         [Extent2].[CategoryID] AS [CategoryID1],         [Extent2].[ProductName] AS [ProductName],         [Extent2].[UnitPrice] AS [UnitPrice],         [Extent2].[UnitsInStock] AS [UnitsInStock],         [Extent2].[Discontinued] AS [Discontinued],         CASE WHEN ([Extent2].[ProductID] IS NULL) THEN CAST(NULL AS int) ELSE 1 END AS [C1]        FROM   (SELECT             [Extent1].[CategoryID] AS [K1],             AVG([Extent1].[UnitPrice]) AS [A1]            FROM [dbo].[Product] AS [Extent1]            GROUP BY [Extent1].[CategoryID] ) AS [GroupBy1]        LEFT OUTER JOIN [dbo].[Product] AS [Extent2] ON ([GroupBy1].[K1] = [Extent2].[CategoryID]) AND ([Extent2].[UnitPrice] > [GroupBy1].[A1])    )  AS [Project1]    ORDER BY [Project1].[CategoryID] ASC, [Project1].[C1] ASC

转载于:https://www.cnblogs.com/libingql/p/4049400.html

你可能感兴趣的文章
juqery模板 Templates
查看>>
移动浏览器中实现拨打电话,调用sms,发送email
查看>>
docker 搭建小型的node开发环境。
查看>>
Java第九次作业
查看>>
.Net Discovery系“.NET技术”列之-深入理解平台机制与性能影响 (中)
查看>>
1.文件重命名工具
查看>>
【java】json格式解析
查看>>
Linux开始结束ping命令
查看>>
开源一款私藏Management Studio插件,ProjkyAddin,送给所有使用SQLServer的园友们
查看>>
jQuery判断checkbox是否选中的3种方法
查看>>
LinkedList源码分析
查看>>
【算法介绍】哈希排序算法
查看>>
UpdatePanel and JQuery Plugin
查看>>
centos5.7下的kdump
查看>>
[JavaEE笔记]Cookie
查看>>
ELK+Filebeat (1)
查看>>
leetcode 443. String Compression
查看>>
在没联网环境下,启动tomcat出错
查看>>
关于Git bash-127.0.0.7:8888拒绝访问的小问题--环境变量
查看>>
有价值的数据
查看>>