03Linqtosql查询语法.docx
- 文档编号:4673772
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:15
- 大小:18.27KB
03Linqtosql查询语法.docx
《03Linqtosql查询语法.docx》由会员分享,可在线阅读,更多相关《03Linqtosql查询语法.docx(15页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 03 Linqtosql 查询 语法