LINQ(7)

2019-04-15 20:11

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(\

(from c in ctx.Customers where c.ContactName.StartsWith(\

对应SQL:

CompanyName], [t1].[ContactName], [t1].[ContactTitle], [t1].[Address], [t1].[City], [t1].[Region], [t1].[PostalCode], [t1].[C

], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode],

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

ec = 0; Scale = 0) [A%] ec = 0; Scale = 0) [%A%]

排除相交项

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

var 排除相交项 = (from c in ctx.Customers where c.City.Contains(\

(from c in ctx.Customers where c.ContactName.StartsWith(\

对应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] in操作

描述:查询指定城市中的客户 查询句法:

var in操作 = from c in ctx.Customers

where new string[] { \ 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 [t0].[City] IN (@p0, @p1, @p2)

-- @p0: Input String (Size = 11; Prec = 0; Scale = 0) [Brandenburg] -- @p1: Input String (Size = 5; Prec = 0; Scale = 0) [Cowes] -- @p2: Input String (Size = 7; Prec = 0; Scale = 0) [Stavern] join

描述:内连接,没有分类的产品查询不到 查询句法:

var innerjoin = from p in ctx.Products join c in ctx.Categories

on p.CategoryID equals c.CategoryID select p.ProductName; 对应SQL:

SELECT COUNT(*) AS [value] FROM [dbo].[Products] AS [t0]

INNER JOIN [dbo].[Categories] AS [t1] ON [t0].[CategoryID] = ([t1].[CategoryID]) 描述:外连接,没有分类的产品也能查询到 查询句法:

var leftjoin = from p in ctx.Products join c in ctx.Categories

on p.CategoryID equals c.CategoryID into pro

from x in pro.DefaultIfEmpty() select p.ProductName; 对应SQL:

SELECT COUNT(*) AS [value] FROM [dbo].[Products] AS [t0]

LEFT OUTER JOIN [dbo].[Categories] AS [t1] ON [t0].[CategoryID] = ([t1].[CategoryID]) 你可能会很奇怪,原先很复杂的SQL使用查询句法会很简单(比如按照条件分组)。但是原先觉得很好理解的SQL使用查询句法会觉得很复杂(比如连接查询)。其实,我们还可以通过其它方式进行连接操作,在以后说DataLoadOptions类型的时候会再说。虽然Linq to sql已经非常智能了,但是对于非常复杂的查询还是建议通过存储过程实现,下次讲解如何调用存储过程。

一步一步学Linq to sql(五):存储过程

2007-10-20 00:00 作者: LoveCherry 出处: 天极网 责任编辑:>dizzarz 普通存储过程

首先在查询分析器运行下面的代码来创建一个存储过程:

create proc sp_singleresultset as

set nocount on

select * from customers


LINQ(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于中国航空发动机的最新报道 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: