zoukankan      html  css  js  c++  java
  • SQL,LINQ,Lambda语法对照图(转载)

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

    SQL

    LINQLambda

    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)
    )

  • 相关阅读:
    Linux stress 命令
    接口安全设计
    2019年MTP管理技能提升培训笔记
    Docker运行图形化程序
    CentOS7搭建本地YUM仓库,并定期同步阿里云源
    搭建私服-docker registry
    linux剪贴板
    如何搭建Docker私有仓库
    彻底解决 LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
    为人父母始知天下事---“宝宝哭了”的问题来说说什么是分析,什么是设计
  • 原文地址:https://www.cnblogs.com/CielWater/p/3528718.html
Copyright © 2011-2022 走看看