Linq to sql :查询句法---distinct
来源:互联网 发布:linux 查看syslog 编辑:程序博客网 时间:2024/06/05 04:24
描述:查询顾客覆盖的国家
查询句法:
var 过滤相同项 = (from c in ctx.Customers orderby c.Country select c.Country).Distinct();
对应 SQL:
SELECT DISTINCT [t0].[Country]
FROM [dbo].[Customers] AS [t0]
union
描述:查询城市是 A 打头和城市包含 A 的顾客并按照顾客名字排序
查询句法:
var 连接并且过滤相同项 = (from c in ctx.Customers where c.City.Contains("A") select
c).Union
(from c in ctx.Customers where c.ContactName.StartsWith("A") select
c).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]
ORDER BY [t3].[ContactName]
-- @p0: Input String (Size = 3; Prec = 0; Scale = 0) [%A%]
-- @p1: Input String (Size = 2; Prec = 0; Scale = 0) [A%]
concat
描述:查询城市是 A 打头和城市包含 A 的顾客并按照顾客名字排序,相同的顾客信息不会
过滤
查询句法:
var 连接并且不过滤相同项 = (from c in ctx.Customers where c.City.Contains("A") select
c).Concat
(from c in ctx.Customers where c.ContactName.StartsWith("A") select
c).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 ALL
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]
ORDER BY [t3].[ContactName]
-- @p0: Input String (Size = 3; Prec = 0; Scale = 0) [%A%]
-- @p1: Input String (Size = 2; Prec = 0; Scale = 0) [A%]
取相交项
描述:查询城市是 A 打头的顾客和城市包含 A 的顾客的交集,并按照顾客名字排序
查询句法:
var 取相交项 = (from c in ctx.Customers where c.City.Contains("A") select c).Intersect
(from c in ctx.Customers where c.ContactName.StartsWith("A") select
c).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 (
SELECT DISTINCT [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(
SELECT NULL AS [EMPTY]
FROM [dbo].[Customers] AS [t2]
WHERE ([t1].[CustomerID] = [t2].[CustomerID]) AND ([t2].[ContactName] LIKE @p0)
)) AND ([t1].[City] LIKE @p1)
ORDER BY [t1].[ContactName]
-- @p0: Input String (Size = 2; Prec = 0; Scale = 0) [A%]
-- @p1: Input String (Size = 3; Prec = 0; Scale = 0) [%A%]
排除相交项
描述:查询城市包含 A 的顾客并从中删除城市以 A 开头的顾客,并按照顾客名字排序
查询句法:
var 排除相交项 = (from c in ctx.Customers where c.City.Contains("A") select c).Except
(from c in ctx.Customers where c.ContactName.StartsWith("A") select
c).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 (
SELECT DISTINCT [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 (NOT (EXISTS(
SELECT NULL AS [EMPTY]
FROM [dbo].[Customers] AS [t2]
WHERE ([t1].[CustomerID] = [t2].[CustomerID]) AND ([t2].[ContactName] LIKE @p0)
))) AND ([t1].[City] LIKE @p1)
ORDER BY [t1].[ContactName]
-- @p0: Input String (Size = 2; Prec = 0; Scale = 0) [A%]
-- @p1: Input String (Size = 3; Prec = 0; Scale = 0) [%A%]
子查询
描述:查询订单数超过 5 的顾客信息
查询句法:
var 子查询 = from c in ctx.Customers
where
(from o in ctx.Orders group o by o.CustomerID into o where
o.Count() > 5 select o.Key).Contains(c.CustomerID)
select c;
对应 SQL:
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 EXISTS(
SELECT NULL AS [EMPTY]
FROM (
SELECT COUNT(*) AS [value], [t1].[CustomerID]
FROM [dbo].[Orders] AS [t1]
GROUP BY [t1].[CustomerID]
) AS [t2]
WHERE ([t2].[CustomerID] = [t0].[CustomerID]) AND ([t2].[value] > @p0)
)
查询句法:
var 过滤相同项 = (from c in ctx.Customers orderby c.Country select c.Country).Distinct();
对应 SQL:
SELECT DISTINCT [t0].[Country]
FROM [dbo].[Customers] AS [t0]
union
描述:查询城市是 A 打头和城市包含 A 的顾客并按照顾客名字排序
查询句法:
var 连接并且过滤相同项 = (from c in ctx.Customers where c.City.Contains("A") select
c).Union
(from c in ctx.Customers where c.ContactName.StartsWith("A") select
c).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]
ORDER BY [t3].[ContactName]
-- @p0: Input String (Size = 3; Prec = 0; Scale = 0) [%A%]
-- @p1: Input String (Size = 2; Prec = 0; Scale = 0) [A%]
concat
描述:查询城市是 A 打头和城市包含 A 的顾客并按照顾客名字排序,相同的顾客信息不会
过滤
查询句法:
var 连接并且不过滤相同项 = (from c in ctx.Customers where c.City.Contains("A") select
c).Concat
(from c in ctx.Customers where c.ContactName.StartsWith("A") select
c).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 ALL
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]
ORDER BY [t3].[ContactName]
-- @p0: Input String (Size = 3; Prec = 0; Scale = 0) [%A%]
-- @p1: Input String (Size = 2; Prec = 0; Scale = 0) [A%]
取相交项
描述:查询城市是 A 打头的顾客和城市包含 A 的顾客的交集,并按照顾客名字排序
查询句法:
var 取相交项 = (from c in ctx.Customers where c.City.Contains("A") select c).Intersect
(from c in ctx.Customers where c.ContactName.StartsWith("A") select
c).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 (
SELECT DISTINCT [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(
SELECT NULL AS [EMPTY]
FROM [dbo].[Customers] AS [t2]
WHERE ([t1].[CustomerID] = [t2].[CustomerID]) AND ([t2].[ContactName] LIKE @p0)
)) AND ([t1].[City] LIKE @p1)
ORDER BY [t1].[ContactName]
-- @p0: Input String (Size = 2; Prec = 0; Scale = 0) [A%]
-- @p1: Input String (Size = 3; Prec = 0; Scale = 0) [%A%]
排除相交项
描述:查询城市包含 A 的顾客并从中删除城市以 A 开头的顾客,并按照顾客名字排序
查询句法:
var 排除相交项 = (from c in ctx.Customers where c.City.Contains("A") select c).Except
(from c in ctx.Customers where c.ContactName.StartsWith("A") select
c).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 (
SELECT DISTINCT [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 (NOT (EXISTS(
SELECT NULL AS [EMPTY]
FROM [dbo].[Customers] AS [t2]
WHERE ([t1].[CustomerID] = [t2].[CustomerID]) AND ([t2].[ContactName] LIKE @p0)
))) AND ([t1].[City] LIKE @p1)
ORDER BY [t1].[ContactName]
-- @p0: Input String (Size = 2; Prec = 0; Scale = 0) [A%]
-- @p1: Input String (Size = 3; Prec = 0; Scale = 0) [%A%]
子查询
描述:查询订单数超过 5 的顾客信息
查询句法:
var 子查询 = from c in ctx.Customers
where
(from o in ctx.Orders group o by o.CustomerID into o where
o.Count() > 5 select o.Key).Contains(c.CustomerID)
select c;
对应 SQL:
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 EXISTS(
SELECT NULL AS [EMPTY]
FROM (
SELECT COUNT(*) AS [value], [t1].[CustomerID]
FROM [dbo].[Orders] AS [t1]
GROUP BY [t1].[CustomerID]
) AS [t2]
WHERE ([t2].[CustomerID] = [t0].[CustomerID]) AND ([t2].[value] > @p0)
)
-- @p0: Input Int32 (Size = 0; Prec = 0; Scale = 0) [5]
- Linq to sql :查询句法---distinct
- LINQ to SQL查询句法
- Linq to sql :查询句法
- Linq to sql查询句法
- Linq to sql(四):查询句法
- Linq to sql(四):查询句法
- Linq to sql(四):查询句法
- Linq to sql :查询句法---select
- Linq to sql :查询句法---where
- Linq to sql :查询句法---orderby
- Linq to sql :查询句法--in 操作
- Linq to sql :查询句法--join
- Linq to sql :查询句法---分页分组查询
- 一步一步学Linq to sql(四):查询句法
- 一步一步学Linq to sql(四):查询句法
- 一步一步学Linq to sql(四):查询句法
- Linq to Sql 学习系列之四 查询句法
- 一步一步学Linq to sql(四):查询句法
- SVN Diff文件处理分析
- C++编码规范与指导
- Linq to sql :查询句法---分页分组查询
- CloudStack无法添加模板和iso
- 最小操作数(改版)
- Linq to sql :查询句法---distinct
- 项目安排
- 字符设备驱动——申请设备号、注册字符设备
- Linq to sql :查询句法--in 操作
- 提高你的Java代码质量吧:提防包装类型的null值
- 一个简单的信号量的例子
- MFC多文档常用函数
- 视差滚动(Parallax Scrolling)效果的原理和实现
- 基于jQuery的日历控件【原创】