SQL-LINQ-Lambda语法对照实例

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

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://www.58os.com/BBS/PublicBSS/Article-123.html

转载于:https://www.cnblogs.com/guoxiongfei/p/3410254.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值