03Linqtosql查询语法Word格式.docx
《03Linqtosql查询语法Word格式.docx》由会员分享,可在线阅读,更多相关《03Linqtosql查询语法Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
SELECT[t0].[LastName]+[t0].[FirstName]AS[value],DATEPART(Year,[t0].[HireDate])AS[value2]
FROM[dbo].[Employees]AS[t0]
查询顾客的ID以及联系信息(职位和联系人)
var构建匿名类型3=fromcinctx.Customers
ID=c.CustomerID,
联系信息=new
职位=c.ContactTitle,
联系人=c.ContactName
}
SELECT[t0].[CustomerID],[t0].[ContactTitle],[t0].[ContactName]
FROM[dbo].[Customers]AS[t0]
查询订单号和订单是否超重的信息
varselect带条件=fromoinctx.Orders
订单号=o.OrderID,
是否超重=o.Freight>
100?
"
是"
:
否"
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:
Scale=0)[否]
where
查询顾客的国家、城市和订单数信息,要求国家是法国并且订单数大于5
var多条件=fromcinctx.Customers
wherec.Country=="
France"
&
&
c.Orders.Count>
5
国家=c.Country,
城市=c.City,
订单数=c.Orders.Count
SELECT[t0].[Country],[t0].[City],(
SELECTCOUNT(*)
FROM[dbo].[Orders]AS[t2]
WHERE[t2].[CustomerID]=[t0].[CustomerID]
)AS[value]
WHERE([t0].[Country]=@p0)AND(((
FROM[dbo].[Orders]AS[t1]
WHERE[t1].[CustomerID]=[t0].[CustomerID]
))>
@p1)
InputString(Size=6;
Scale=0)[France]
InputInt32(Size=0;
Scale=0)[5]
orderby
查询所有没有下属雇员的雇用年和名,按照雇用年倒序,按照名正序
var排序=fromempinctx.Employees
whereemp.Employees.Count==0
orderbyemp.HireDate.Value.Yeardescending,emp.FirstNameascending
雇用年=emp.HireDate.Value.Year,
名=emp.FirstName
SELECTDATEPART(Year,[t0].[HireDate])AS[value],[t0].[FirstName]
WHERE((
FROM[dbo].[Employees]AS[t1]
WHERE[t1].[ReportsTo]=[t0].[EmployeeID]
))=@p0
ORDERBYDATEPART(Year,[t0].[HireDate])DESC,[t0].[FirstName]
Scale=0)[0]
分页
按照每页10条记录,查询第二页的顾客
var分页=(fromcinctx.Customersselectc).Skip(10).Take(10);
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]
)AS[t1]
WHERE[t1].[ROW_NUMBER]>
@p0
Scale=0)[10]
分组
根据顾客的国家分组,查询顾客数大于5的国家名和顾客数
var一般分组=fromcinctx.Customers
groupcbyc.Countryintog
whereg.Count()>
orderbyg.Count()descending
国家=g.Key,
顾客数=g.Count()
SELECT[t1].[Country],[t1].[value3]AS[顾客数]
SELECTCOUNT(*)AS[value],COUNT(*)AS[value2],COUNT(*)AS[value3],[t0].[Country]
GROUPBY[t0].[Country]
WHERE[t1].[value]>
ORDERBY[t1].[value2]DESC
Scale=0)[5]
根据国家和城市分组,查询顾客覆盖的国家和城市
var匿名类型分组=fromcinctx.Customers
groupcbynew{c.City,c.Country}intog
orderbyg.Key.Country,g.Key.City
国家=g.Key.Country,
城市=g.Key.City
SELECT[t1].[Country],[t1].[City]
SELECT[t0].[City],[t0].[Country]
GROUPBY[t0].[City],[t0].[Country]
ORDERBY[t1].[Country],[t1].[City]
按照是否超重条件分组,分别查询订单数量
var按照条件分组=fromoinctx.Orders
groupobynew{条件=o.Freight>
100}intog
数量=g.Count(),
是否超重=g.Key.条件?
SELECT
WHEN[t2].[value2]=1THEN@p1
END)AS[value],[t2].[value]AS[数量]
SELECTCOUNT(*)AS[value],[t1].[value]AS[value2]
@p0THEN1
WHENNOT([t0].[Freight]>
@p0)THEN0
ELSENULL
GROUPBY[t1].[value]
)AS[t2]
distinct
查询顾客覆盖的国家
var过滤相同项=(fromcinctx.Customersselectc.Country).Distinct();
SELECTDISTINCT[t0].[Country]
Union(说明:
连接不同的集合,自动过滤相同项;
延迟。
即是将两个集合进行合并操作,过滤相同的项。
)
查询姓名是A打头和城市包含A的顾客并按照顾客名字排序
var连接并且过滤相同项=(fromcinctx.Customerswherec.City.Contains("
A"
)selectc).Union
(fromcinctx.Customerswherec.ContactName.StartsWith("
)selectc).OrderBy(c=>
c.ContactName);
SELECT[t3].[CustomerID],[t3].[CompanyName],[t3].[ContactName],[t3].[ContactTitle],[t3].[Address],[t3].[City],[t3].[Region],[t3].[PostalCode],[t3].[Country],[t3].[Phone],[t3].[Fax]
SELECT[t2].[CustomerID],[t2].[CompanyName],[t2].[ContactName],[t2].[ContactTitle],[t2].[Address],[t2].[City],[t2].[Region],[t2].[PostalCode],[t2].[Country],[t2].[Phone],[t2].[Fax]
SELECT[t0].[CustomerID],[t0].[CompanyName],[t0].[ContactName],[t0].[ContactTitle],[t0].[Address],[t0].[City],[t0].[Region],[t0].[PostalCode],[t0].[Country],[t0].[Phone],[t0].[Fax]
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[t3]
ORDERBY[t3].[ContactName]
Inp0utString(Size=3;
Scale=0)[%A%]
InputString(Size=2;
Scale=0)[A%]
Concat[说明:
连接不同的集合,不会自动过滤相同项;
]
查询是包含A的城市对应的顾客和姓名以A开头的顾客,并按照顾客名字排序,相同的顾客信息不会过滤
(两个条件多成立1.只要城市是包含A,2.也可以只要姓名一A打头)
var连接并且不过滤相同项=(fromcinctx.Customerswherec.City.Contains("
)selectc).Concat
UNIONALL
InputString(Size=3;
取相交项(说明:
取相交项;
即是获取不同集合的相同项(交集)。
即先遍历第一个集合,找出所有唯一的元素,然后遍历第二个集合,并将每个元素与前面找出的元素作对比,返回所有在两个集合内都出现的元素。
查询城市是A打头的顾客和姓名包含A的顾客的交集,并按照顾客名字排序
var取相交项=(fromcinctx.Customerswherec.City.Contains("
)selectc).Intersect
SELECTDISTINCT[t0].[CustomerID],[t0].[CompanyName],[t0].[ContactName],[t0].[ContactTitle],[t0].[Address],[t0].[City],[t0].[Region],[t0].[PostalCode],[t0].[Country],[t0].[Phone],[t0].[Fax]
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]
排除相交项(说明:
排除相交项;
即是从某集合中删除与另一个集合中相同的项。
先遍历第一个集合,找出所有唯一的元素,然后再遍历第二个集合,返回第二个集合中所有未出现在前面所得元素集合中的元素。
查询城市包含A的顾客并从中删除姓名以A开头的顾客,并按照顾客名字排序
var排除相交项=(fromcinctx.Customerswherec.City.Contains("
)selectc).Except
W