03Linqtosql查询语法.docx

上传人:b****4 文档编号:4673772 上传时间:2022-12-07 格式:DOCX 页数:15 大小:18.27KB
下载 相关 举报
03Linqtosql查询语法.docx_第1页
第1页 / 共15页
03Linqtosql查询语法.docx_第2页
第2页 / 共15页
03Linqtosql查询语法.docx_第3页
第3页 / 共15页
03Linqtosql查询语法.docx_第4页
第4页 / 共15页
03Linqtosql查询语法.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

03Linqtosql查询语法.docx

《03Linqtosql查询语法.docx》由会员分享,可在线阅读,更多相关《03Linqtosql查询语法.docx(15页珍藏版)》请在冰豆网上搜索。

03Linqtosql查询语法.docx

03Linqtosql查询语法

03Linqtosql--查询语法

知识点

select

描述:

查询顾客的公司名、地址信息

查询句法:

var构建匿名类型1=fromcinctx.Customers

selectnew

{

公司名=c.CompanyName,

地址=c.Address

};

对应SQL:

SELECT[t0].[CompanyName],[t0].[Address]

FROM[dbo].[Customers]AS[t0]

描述:

查询职员的姓名和雇用年份

查询句法:

var构建匿名类型2=fromempinctx.Employees

selectnew

{

姓名=emp.LastName+emp.FirstName,

雇用年=emp.HireDate.Value.Year

};

对应SQL:

SELECT[t0].[LastName]+[t0].[FirstName]AS[value],DATEPART(Year,[t0].[HireDate])AS[value2]

FROM[dbo].[Employees]AS[t0]

描述:

查询顾客的ID以及联系信息(职位和联系人)

查询句法:

var构建匿名类型3=fromcinctx.Customers

selectnew

{

ID=c.CustomerID,

联系信息=new

{

职位=c.ContactTitle,

联系人=c.ContactName

}

};

对应SQL:

SELECT[t0].[CustomerID],[t0].[ContactTitle],[t0].[ContactName]

FROM[dbo].[Customers]AS[t0]

描述:

查询订单号和订单是否超重的信息

查询句法:

varselect带条件=fromoinctx.Orders

selectnew

{

订单号=o.OrderID,

是否超重=o.Freight>100?

"是":

"否"

};

对应SQL:

SELECT[t0].[OrderID],

(CASE

WHEN[t0].[Freight]>@p0THEN@p1

ELSE@p2

END)AS[value]

FROM[dbo].[Orders]AS[t0]

--@p0:

InputCurrency(Size=0;Prec=19;Scale=4)[100]

--@p1:

InputString(Size=1;Prec=0;Scale=0)[是]

--@p2:

InputString(Size=1;Prec=0;Scale=0)[否]

where

描述:

查询顾客的国家、城市和订单数信息,要求国家是法国并且订单数大于5

查询句法:

var多条件=fromcinctx.Customers

wherec.Country=="France"&&c.Orders.Count>5

selectnew

{

国家=c.Country,

城市=c.City,

订单数=c.Orders.Count

};

对应SQL:

SELECT[t0].[Country],[t0].[City],(

SELECTCOUNT(*)

FROM[dbo].[Orders]AS[t2]

WHERE[t2].[CustomerID]=[t0].[CustomerID]

)AS[value]

FROM[dbo].[Customers]AS[t0]

WHERE([t0].[Country]=@p0)AND(((

SELECTCOUNT(*)

FROM[dbo].[Orders]AS[t1]

WHERE[t1].[CustomerID]=[t0].[CustomerID]

))>@p1)

--@p0:

InputString(Size=6;Prec=0;Scale=0)[France]

--@p1:

InputInt32(Size=0;Prec=0;Scale=0)[5]

orderby

描述:

查询所有没有下属雇员的雇用年和名,按照雇用年倒序,按照名正序

查询句法:

var排序=fromempinctx.Employees

whereemp.Employees.Count==0

orderbyemp.HireDate.Value.Yeardescending,emp.FirstNameascending

selectnew

{

雇用年=emp.HireDate.Value.Year,

名=emp.FirstName

};

对应SQL:

SELECTDATEPART(Year,[t0].[HireDate])AS[value],[t0].[FirstName]

FROM[dbo].[Employees]AS[t0]

WHERE((

SELECTCOUNT(*)

FROM[dbo].[Employees]AS[t1]

WHERE[t1].[ReportsTo]=[t0].[EmployeeID]

))=@p0

ORDERBYDATEPART(Year,[t0].[HireDate])DESC,[t0].[FirstName]

--@p0:

InputInt32(Size=0;Prec=0;Scale=0)[0]

分页

描述:

按照每页10条记录,查询第二页的顾客

查询句法:

var分页=(fromcinctx.Customersselectc).Skip(10).Take(10);

对应SQL:

SELECTTOP10[t1].[CustomerID],[t1].[CompanyName],[t1].[ContactName],[t1].[ContactTitle],[t1].[Address],[t1].[City],[t1].[Region],[t1].[PostalCode],[t1].[Country],[t1].[Phone],[t1].[Fax]

FROM(

SELECTROW_NUMBER()OVER(ORDERBY[t0].[CustomerID],[t0].[CompanyName],[t0].[ContactName],[t0].[ContactTitle],[t0].[Address],[t0].[City],[t0].[Region],[t0].[PostalCode],[t0].[Country],[t0].[Phone],[t0].[Fax])AS[ROW_NUMBER],[t0].[CustomerID],[t0].[CompanyName],[t0].[ContactName],[t0].[ContactTitle],[t0].[Address],[t0].[City],[t0].[Region],[t0].[PostalCode],[t0].[Country],[t0].[Phone],[t0].[Fax]

FROM[dbo].[Customers]AS[t0]

)AS[t1]

WHERE[t1].[ROW_NUMBER]>@p0

--@p0:

InputInt32(Size=0;Prec=0;Scale=0)[10]

分组

描述:

根据顾客的国家分组,查询顾客数大于5的国家名和顾客数

查询句法:

var一般分组=fromcinctx.Customers

groupcbyc.Countryintog

whereg.Count()>5

orderbyg.Count()descending

selectnew

{

国家=g.Key,

顾客数=g.Count()

};

对应SQL:

SELECT[t1].[Country],[t1].[value3]AS[顾客数]

FROM(

SELECTCOUNT(*)AS[value],COUNT(*)AS[value2],COUNT(*)AS[value3],[t0].[Country]

FROM[dbo].[Customers]AS[t0]

GROUPBY[t0].[Country]

)AS[t1]

WHERE[t1].[value]>@p0

ORDERBY[t1].[value2]DESC

--@p0:

InputInt32(Size=0;Prec=0;Scale=0)[5]

描述:

根据国家和城市分组,查询顾客覆盖的国家和城市

查询句法:

var匿名类型分组=fromcinctx.Customers

groupcbynew{c.City,c.Country}intog

orderbyg.Key.Country,g.Key.City

selectnew

{

国家=g.Key.Country,

城市=g.Key.City

};

对应SQL:

SELECT[t1].[Country],[t1].[City]

FROM(

SELECT[t0].[City],[t0].[Country]

FROM[dbo].[Customers]AS[t0]

GROUPBY[t0].[City],[t0].[Country]

)AS[t1]

ORDERBY[t1].[Country],[t1].[City]

描述:

按照是否超重条件分组,分别查询订单数量

查询句法:

var按照条件分组=fromoinctx.Orders

groupobynew{条件=o.Freight>100}intog

selectnew

{

数量=g.Count(),

是否超重=g.Key.条件?

"是":

"否"

};

对应SQL:

SELECT

(CASE

WHEN[t2].[value2]=1THEN@p1

ELSE@p2

END)AS[value],[t2].[value]AS[数量]

FROM(

SELECTCOUNT(*)AS[value],[t1].[value]AS[value2]

FROM(

SELECT

(CASE

WHEN[t0].[Freight]>@p0THEN1

WHENNOT([t0].[Freight]>@p0)THEN0

ELSENULL

END)AS[value]

FROM[dbo].[Orders]AS[t0]

)AS[t1]

GROUPBY[t1].[value]

)AS[t2]

--@p0:

InputCurrency(Size=0;Prec=19;Scale=4)[100]

--@p1:

InputString(Size=1;Prec=0;Scale=0)[是]

--@p2:

InputString(Size=1;Prec=0;Scale=0)[否]

distinct

描述:

查询顾客覆盖的国家

查询句法:

var过滤相同项=(fromcinctx.Customersselectc.Country).Distinct();

对应SQL:

SELECTDISTINCT[t0].[Country]

FROM[dbo].[Customers]AS[t0]

Union(说明:

连接不同的集合,自动过滤相同项;延迟。

即是将两个集合进行合并操作,过滤相同的项。

描述:

查询姓名是A打头和城市包含A的顾客并按照顾客名字排序

查询句法:

var连接并且过滤相同项=(fromcinctx.Customerswherec.City.Contains("A")selectc).Union

(fromcinctx.Customerswherec.ContactName.StartsWith("A")selectc).OrderBy(c=>c.ContactName);

对应SQL:

SELECT[t3].[CustomerID],[t3].[CompanyName],[t3].[ContactName],[t3].[ContactTitle],[t3].[Address],[t3].[City],[t3].[Region],[t3].[PostalCode],[t3].[Country],[t3].[Phone],[t3].[Fax]

FROM(

SELECT[t2].[CustomerID],[t2].[CompanyName],[t2].[ContactName],[t2].[ContactTitle],[t2].[Address],[t2].[City],[t2].[Region],[t2].[PostalCode],[t2].[Country],[t2].[Phone],[t2].[Fax]

FROM(

SELECT[t0].[CustomerID],[t0].[CompanyName],[t0].[ContactName],[t0].[ContactTitle],[t0].[Address],[t0].[City],[t0].[Region],[t0].[PostalCode],[t0].[Country],[t0].[Phone],[t0].[Fax]

FROM[dbo].[Customers]AS[t0]

WHERE[t0].[City]LIKE@p0

UNION

SELECT[t1].[CustomerID],[t1].[CompanyName],[t1].[ContactName],[t1].[ContactTitle],[t1].[Address],[t1].[City],[t1].[Region],[t1].[PostalCode],[t1].[Country],[t1].[Phone],[t1].[Fax]

FROM[dbo].[Customers]AS[t1]

WHERE[t1].[ContactName]LIKE@p1

)AS[t2]

)AS[t3]

ORDERBY[t3].[ContactName]

--@p0:

Inp0utString(Size=3;Prec=0;Scale=0)[%A%]

--@p1:

InputString(Size=2;Prec=0;Scale=0)[A%]

Concat[说明:

连接不同的集合,不会自动过滤相同项;延迟。

]

描述:

查询是包含A的城市对应的顾客和姓名以A开头的顾客,并按照顾客名字排序,相同的顾客信息不会过滤

(两个条件多成立1.只要城市是包含A,2.也可以只要姓名一A打头)

查询句法:

var连接并且不过滤相同项=(fromcinctx.Customerswherec.City.Contains("A")selectc).Concat

(fromcinctx.Customerswherec.ContactName.StartsWith("A")selectc).OrderBy(c=>c.ContactName);

对应SQL:

SELECT[t3].[CustomerID],[t3].[CompanyName],[t3].[ContactName],[t3].[ContactTitle],[t3].[Address],[t3].[City],[t3].[Region],[t3].[PostalCode],[t3].[Country],[t3].[Phone],[t3].[Fax]

FROM(

SELECT[t2].[CustomerID],[t2].[CompanyName],[t2].[ContactName],[t2].[ContactTitle],[t2].[Address],[t2].[City],[t2].[Region],[t2].[PostalCode],[t2].[Country],[t2].[Phone],[t2].[Fax]

FROM(

SELECT[t0].[CustomerID],[t0].[CompanyName],[t0].[ContactName],[t0].[ContactTitle],[t0].[Address],[t0].[City],[t0].[Region],[t0].[PostalCode],[t0].[Country],[t0].[Phone],[t0].[Fax]

FROM[dbo].[Customers]AS[t0]

WHERE[t0].[City]LIKE@p0

UNIONALL

SELECT[t1].[CustomerID],[t1].[CompanyName],[t1].[ContactName],[t1].[ContactTitle],[t1].[Address],[t1].[City],[t1].[Region],[t1].[PostalCode],[t1].[Country],[t1].[Phone],[t1].[Fax]

FROM[dbo].[Customers]AS[t1]

WHERE[t1].[ContactName]LIKE@p1

)AS[t2]

)AS[t3]

ORDERBY[t3].[ContactName]

--@p0:

InputString(Size=3;Prec=0;Scale=0)[%A%]

--@p1:

InputString(Size=2;Prec=0;Scale=0)[A%]

取相交项(说明:

取相交项;延迟。

即是获取不同集合的相同项(交集)。

即先遍历第一个集合,找出所有唯一的元素,然后遍历第二个集合,并将每个元素与前面找出的元素作对比,返回所有在两个集合内都出现的元素。

描述:

查询城市是A打头的顾客和姓名包含A的顾客的交集,并按照顾客名字排序

查询句法:

var取相交项=(fromcinctx.Customerswherec.City.Contains("A")selectc).Intersect

(fromcinctx.Customerswherec.ContactName.StartsWith("A")selectc).OrderBy(c=>c.ContactName);

对应SQL:

SELECT[t1].[CustomerID],[t1].[CompanyName],[t1].[ContactName],[t1].[ContactTitle],[t1].[Address],[t1].[City],[t1].[Region],[t1].[PostalCode],[t1].[Country],[t1].[Phone],[t1].[Fax]

FROM(

SELECTDISTINCT[t0].[CustomerID],[t0].[CompanyName],[t0].[ContactName],[t0].[ContactTitle],[t0].[Address],[t0].[City],[t0].[Region],[t0].[PostalCode],[t0].[Country],[t0].[Phone],[t0].[Fax]

FROM[dbo].[Customers]AS[t0]

)AS[t1]

WHERE(EXISTS(

SELECTNULLAS[EMPTY]

FROM[dbo].[Customers]AS[t2]

WHERE([t1].[CustomerID]=[t2].[CustomerID])AND([t2].[ContactName]LIKE@p0)

))AND([t1].[City]LIKE@p1)

ORDERBY[t1].[ContactName]

--@p0:

InputString(Size=2;Prec=0;Scale=0)[A%]

--@p1:

InputString(Size=3;Prec=0;Scale=0)[%A%]

排除相交项(说明:

排除相交项;延迟。

即是从某集合中删除与另一个集合中相同的项。

先遍历第一个集合,找出所有唯一的元素,然后再遍历第二个集合,返回第二个集合中所有未出现在前面所得元素集合中的元素。

描述:

查询城市包含A的顾客并从中删除姓名以A开头的顾客,并按照顾客名字排序

查询句法:

var排除相交项=(fromcinctx.Customerswherec.City.Contains("A")selectc).Except

(fromcinctx.Customerswherec.ContactName.StartsWith("A")selectc).OrderBy(c=>c.ContactName);

对应SQL:

SELECT[t1].[CustomerID],[t1].[CompanyName],[t1].[ContactName],[t1].[ContactTitle],[t1].[Address],[t1].[City],[t1].[Region],[t1].[PostalCode],[t1].[Country],[t1].[Phone],[t1].[Fax]

FROM(

SELECTDISTINCT[t0].[CustomerID],[t0].[CompanyName],[t0].[ContactName],[t0].[ContactTitle],[t0].[Address],[t0].[City],[t0].[Region],[t0].[PostalCode],[t0].[Country],[t0].[Phone],[t0].[Fax]

FROM[dbo].[Customers]AS[t0]

)AS[t1]

W

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1