如果你熟悉SQL语句,当使用LINQ时,会有似曾相识的感觉.但又略有不同.下面是SQL和LINQ,Lambda语法对照图

SELECT *

FROM HumanResources.Employee

from e in Employees

select e

Employees
   .Select (e => e)

SELECT e.LoginID, e.JobTitle

FROM HumanResources.Employee AS e

from e in Employees

select new {e.LoginID, e.JobTitle}

Employees
   .Select (
      e => 
         new
         {
            LoginID = e.LoginID, 
            JobTitle = e.JobTitle
         }
   )

SELECT e.LoginID AS ID, e.JobTitle AS Title

FROM HumanResources.Employee AS e

from e in Employees

select new {ID = e.LoginID, Title = e.JobTitle}

Employees
   .Select (
      e => 
         new
         {
            ID = e.LoginID, 
            Title = e.JobTitle
         }
   )

SELECT DISTINCT e.JobTitle

FROM HumanResources.Employee AS e

(from e in Employees

select e.JobTitle).Distinct()

Employees
   .Select (e => e.JobTitle)
   .Distinct ()

SELECT e.*

FROM HumanResources.Employee AS e

WHERE e.LoginID = 'test'

from e in Employees

where e.LoginID == "test"

select e

Employees
   .Where (e => (e.LoginID == "test"))

SELECT e.*

FROM HumanResources.Employee AS e

WHERE e.LoginID = 'test' AND e.SalariedFlag = 1

from e in Employees

where e.LoginID == "test" && e.SalariedFlag

select e

Employees
   .Where (e => ((e.LoginID == "test") && e.SalariedFlag))

SELECT e.*
FROM HumanResources.Employee AS e

WHERE e.VacationHours >= 2 AND e.VacationHours <= 10

from e in Employees

where e.VacationHours >= 2 && e.VacationHours <= 10

select e

Employees
   .Where (e => (((Int32)(e.VacationHours) >= 2) && ((Int32)(e.VacationHours) <= 10)))

SELECT e.*

FROM HumanResources.Employee AS e
ORDER BY e.NationalIDNumber

from e in Employees

orderby e.NationalIDNumber

select e

Employees
   .OrderBy (e => e.NationalIDNumber)

SELECT e.*

FROM HumanResources.Employee AS e

ORDER BY e.HireDate DESC, e.NationalIDNumber

from e in Employees

orderby e.HireDate descending, e.NationalIDNumber

select e

Employees
   .OrderByDescending (e => e.HireDate)
   .ThenBy (e => e.NationalIDNumber)

SELECT e.*
FROM HumanResources.Employee AS e

WHERE e.JobTitle LIKE 'Vice%' OR SUBSTRING(e.JobTitle, 0, 3) = 'Pro'

from e in Employees

where e.JobTitle.StartsWith("Vice") || e.JobTitle.Substring(0, 3) == "Pro"

select e

Employees
   .Where (e => (e.JobTitle.StartsWith ("Vice") || (e.JobTitle.Substring (0, 3) == "Pro")))

SELECT SUM(e.VacationHours)

FROM HumanResources.Employee AS e

Employees.Sum(e => e.VacationHours);

SELECT COUNT(*)

FROM HumanResources.Employee AS e

Employees.Count();

SELECT SUM(e.VacationHours) AS TotalVacations, e.JobTitle

FROM HumanResources.Employee AS e

GROUP BY e.JobTitle

from e in Employees

group e by e.JobTitle into g

select new {JobTitle = g.Key, TotalVacations = g.Sum(e => e.VacationHours)}

Employees
   .GroupBy (e => e.JobTitle)
   .Select (
      g => 
         new
         {
            JobTitle = g.Key, 
            TotalVacations = g.Sum (e => (Int32)(e.VacationHours))
         }
   )

SELECT e.JobTitle, SUM(e.VacationHours) AS TotalVacations

FROM HumanResources.Employee AS e

GROUP BY e.JobTitle

HAVING e.COUNT(*) > 2

from e in Employees

group e by e.JobTitle into g

where g.Count() > 2

select new {JobTitle = g.Key, TotalVacations = g.Sum(e => e.VacationHours)}

Employees
   .GroupBy (e => e.JobTitle)
   .Where (g => (g.Count () > 2))
   .Select (
      g => 
         new
         {
            JobTitle = g.Key, 
            TotalVacations = g.Sum (e => (Int32)(e.VacationHours))
         }
   )

SELECT *

FROM Production.Product AS p, Production.ProductReview AS pr

from p in Products

from pr in ProductReviews

select new {p, pr}

Products
   .SelectMany (
      p => ProductReviews, 
      (p, pr) => 
         new
         {
            p = p, 
            pr = pr
         }
   )

SELECT *

FROM Production.Product AS p

INNER JOIN Production.ProductReview AS pr ON p.ProductID = pr.ProductID

from p in Products

join pr in ProductReviews on p.ProductID equals pr.ProductID

select new {p, pr}

Products
   .Join (
      ProductReviews, 
      p => p.ProductID, 
      pr => pr.ProductID, 
      (p, pr) => 
         new
         {
            p = p, 
            pr = pr
         }
   )

SELECT *

FROM Production.Product AS p

INNER JOIN Production.ProductCostHistory AS pch ON p.ProductID = pch.ProductID AND p.SellStartDate = pch.StartDate

from p in Products

join pch in ProductCostHistories on new {p.ProductID, StartDate = p.SellStartDate} equals new {pch.ProductID, StartDate = pch.StartDate}

select new {p, pch}

Products
   .Join (
      ProductCostHistories, 
      p => 
         new
         {
            ProductID = p.ProductID, 
            StartDate = p.SellStartDate
         }, 
      pch => 
         new
         {
            ProductID = pch.ProductID, 
            StartDate = pch.StartDate
         }, 
      (p, pch) => 
         new
         {
            p = p, 
            pch = pch
         }
   )

SELECT *

FROM Production.Product AS p

LEFT OUTER JOIN Production.ProductReview AS pr ON p.ProductID = pr.ProductID

from p in Products

join pr in ProductReviews on p.ProductID equals pr.ProductID

into prodrev

select new {p, prodrev}

Products
   .GroupJoin (
      ProductReviews, 
      p => p.ProductID, 
      pr => pr.ProductID, 
      (p, prodrev) => 
         new
         {
            p = p, 
            prodrev = prodrev
         }
   )

SELECT p.ProductID AS ID

FROM Production.Product AS p

UNION

SELECT pr.ProductReviewID

FROM Production.ProductReview AS pr

(from p in Products

select new {ID = p.ProductID}).Union(

from pr in ProductReviews

select new {ID = pr.ProductReviewID})

Products
   .Select (
      p => 
         new
         {
            ID = p.ProductID
         }
   )
   .Union (
      ProductReviews
         .Select (
            pr => 
               new
               {
                  ID = pr.ProductReviewID
               }
         )
   )

SELECT TOP (10) *

FROM Production.Product AS p

WHERE p.StandardCost < 100

(from p in Products

where p.StandardCost < 100

select p).Take(10)

Products
   .Where (p => (p.StandardCost < 100))
   .Take (10)

SELECT *

FROM [Production].[Product] AS p

WHERE p.ProductID IN(

SELECT pr.ProductID

FROM [Production].[ProductReview] AS [pr]

WHERE pr.[Rating] = 5

)

from p in Products

where (from pr in ProductReviews

where pr.Rating == 5

select pr.ProductID).Contains(p.ProductID)

select p

Products
   .Where (
      p => 
         ProductReviews
            .Where (pr => (pr.Rating == 5))
            .Select (pr => pr.ProductID)
            .Contains (p.ProductID)
   )

转自:http://hi.baidu.com/ren_long_/blog/item/4c574455a37e570e3b293518.html

转载于:https://www.cnblogs.com/rohan/archive/2011/01/18/1937925.html

[转]SQL,LINQ,Lambda语法对照图相关推荐

  1. LINQ教程二:LINQ操作语法

    LINQ查询时有两种语法可供选择:查询表达式语法(Query Expression)和方法语法(Fluent Syntax). 一.查询表达式语法 查询表达式语法是一种更接近SQL语法的查询方式. L ...

  2. Linq lambda表达式经验总结

    Linq有很多值得学习的地方,这里我们主要介绍Linq lambda表达式,包括介绍Expression tree等方面. Linq lambda表达式 了解过C# 3.0的新特性的话应该知道,在C# ...

  3. Java解析SQL生成语法树_Atitit.sql ast 表达式 语法树 语法 解析原理与实现 java php c#.net js python...

    Atitit.sql ast 表达式 语法树 语法 解析原理与实现java php c#.net js python 1.1.Sql语法树ast如下图锁死 2.SQL语句解析的思路和过程 2.1.le ...

  4. Sql Server实用操作-动态sql语句基本语法

    如何将exec执行结果放入变量中? declare @num int, @sqls nvarchar(4000) set @sqls='select @a=count(*) from tableNam ...

  5. 【ArcGIS风暴】ArcGIS生成GlobeLand30土地利用数据集中国区域行列号shp格式对照图(附shp下载)

    效果预览: 本文主要讲述了在ArcGIS中生成GlobeLand中国区域对照行列号的shp格式矢量数据,用途在于将自己的研究区跟行列号矢量图层直接叠加显示,快速找出自己所需要的图幅号,便于快速下载数据 ...

  6. lambda语法_Java Lambda语法替代

    lambda语法 关于lambda-dev邮件列表的讨论已经开始解决lambdas /函数文字的Java语言语法应该是什么样的问题. 让我们看一个稍微平凡的例子,然后尝试弄清楚问题. Perl的人有一 ...

  7. Java Lambda语法替代

    关于lambda-dev邮件列表的讨论已经开始解决lambdas /函数文字的Java语言语法应该是什么样的问题. 让我们看一个稍微平凡的例子,然后尝试弄清楚问题. Perl的人有一个很好的例子,说明 ...

  8. Access和sql server的语法区别

    Access和sql server的语法区别 一.有区别的函数及解决方案  以下所示的解决方案中的函数定义在untDataBase单元中TAdoConn类的方法中. 序号 简述 Access语法 Sq ...

  9. MongoDB的查询语法和SQL的SELECT语法做对比

    2019独角兽企业重金招聘Python工程师标准>>> 对 数据库的查询是相当频繁的,而且很多特殊的需求我们都可以通过SQL查询语句构造出来.那么我们平时习惯的SELECT语法实现的 ...

最新文章

  1. JSONP实现Ajax跨域请求
  2. 一款DIY矢量网络分析仪:NanoVNA
  3. 在Linux上安装PostgreSQL
  4. 增加XP的IIS连接数,解决403.9连接用户过多的问题
  5. 这次被问懵了!搞定了这些SQL优化技巧,下次横着走
  6. python条件查询 或 in_64.Python中ORM查询条件:in和关联模型
  7. apache camel_Apache Camel请向我解释这些端点选项的含义
  8. php 微信小程序 循环 多选,微信小程序实现多选功能
  9. LeetCode 1138. 字母板上的路径
  10. jmeter分布式步骤
  11. C# BackgroundWorker组件学习
  12. 小程序中的多表联合查询
  13. 你的优势在哪?开宝马的学渣教会我的事
  14. linux swp文件重启,Linux下.swp文件的恢复方法
  15. python脚本控制ios手机app_appium 下 python 脚本自动化测试iOS APP 实例
  16. pandas强大的Python数据分析工具
  17. 初学Vue(全家桶)-第16天(vue2):插槽
  18. Python编程基础-函数
  19. vue跳转链接(新页签)
  20. oracle中 unino,union all,minus,intersect的用法

热门文章

  1. 理解CSS3 transform中的Matrix(矩阵)
  2. 【upc5020】 Knight
  3. plot、bar、stem、area函数绘图
  4. ceil--朝正无穷大方向取整
  5. 直返图均衡化代码详解
  6. [html] 回车表单自动跳转如何禁止
  7. Python分式计算
  8. 雅克比迭代法求方程组的解(Python实现)
  9. 第三章:3.8 周期信号的傅里叶变换
  10. STM32F0库函数初始化系列:PWM输出