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 (  | 
|  
 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 (  | 
|  
 SELECT DISTINCT e.JobTitle FROM HumanResources.Employee AS e  | 
 
 (from e in Employees select e.JobTitle).Distinct()  | 
 
 Employees  | 
|  
 SELECT e.* FROM HumanResources.Employee AS e WHERE e.LoginID = 'test'  | 
 
 from e in Employees where e.LoginID == "test" select e  | 
 
 Employees  | 
|  
 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  | 
|  
 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  | 
|  
 SELECT e.* FROM HumanResources.Employee AS e  | 
 
 from e in Employees orderby e.NationalIDNumber select e  | 
 
 Employees  | 
|  
 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  | 
|  
 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  | 
|  
 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  | 
|  
 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  | 
|  
 SELECT * FROM Production.Product AS p, Production.ProductReview AS pr  | 
 
 from p in Products from pr in ProductReviews select new {p, pr}  | 
 
 Products  | 
|  
 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  | 
|  
 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  | 
|  
 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  | 
|  
 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 TOP (10) * FROM Production.Product AS p WHERE p.StandardCost < 100  | 
 
 (from p in Products where p.StandardCost < 100 select p).Take(10)  | 
 
 Products  | 
|  
 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  | 
直接上实例,学习起来是不是更方便些!参考阅读:http://www.58os.com/BBS/PublicBSS/Article-123.html
                    
                
                
            
        
浙公网安备 33010602011771号