惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
Y
Y Combinator Blog
Martin Fowler
Martin Fowler
D
Docker
N
Netflix TechBlog - Medium
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
L
LangChain Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
博客园_首页
量子位
罗磊的独立博客
Blog — PlanetScale
Blog — PlanetScale
云风的 BLOG
云风的 BLOG
Microsoft Azure Blog
Microsoft Azure Blog
宝玉的分享
宝玉的分享
Apple Machine Learning Research
Apple Machine Learning Research
D
DataBreaches.Net
I
InfoQ
Engineering at Meta
Engineering at Meta
The Cloudflare Blog
H
Help Net Security
V
V2EX

博客园 - 郭大少

LINQ to SQL语句之 Count/Sum/Min/Max/Avg LINQ to SQL语句之 Top/Bottom/Paging/SqlMethods 求助关于系统日志的解决方案 【转】 Resharper上手指南 NetTiers模板属性说明 2.3.0——转帖 lucene Field部分参数设置含义 Win2003 防木马、权限设置、IIS服务器安全配置整理-转载 使用ASP.NET Global.asax 文件 主流的ajax框架(整理了部分下载地址) 网络时代最具技术含量的N种方法 法国也要换图腾 微软新闻两则 收集的正则表达式 - 郭大少 - 博客园 在 Internet Explorer 5.5 中创建可编辑的 Web 页 数据挖掘技术简介(入门资料再弱弱的提几个问题) 打印网页中特定内容的实现方法-----网络收集 - 郭大少 - 博客园 微软专家:Linux不会对Windows构成威胁---怀疑中~ 售楼小姐真情自白:揭穿卖房二十骗局 (我转载的--他NND房地产商真黑!) 将aspx网页以HTML形式存储的几个方法
LINQ to SQL语句小结之 Exists/In/Any/All/Contains(转载)
郭大少 · 2012-04-24 · via 博客园 - 郭大少

Exists/In/Any/All/Contains操作符

适用场景:用于判断集合中元素,进一步缩小范围。

Any

说明:用于判断集合中是否有元素满足某一条件;不延迟。(若条件为空,则集合只要不为空就返回True,否则为False)。有2种形式,分别为简单形式和带条件形式。

1.简单形式:

仅返回没有订单的客户:

var q = from c in db.Customers where !c.Orders.Any() 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 NOT (EXISTS( SELECT NULL AS[EMPTY] FROM [dbo].[Orders] AS [t1] WHERE [t1].[CustomerID] = [t0].[CustomerID] ))

2.带条件形式:

仅返回至少有一种产品断货的类别:

var q = from c in db.Categories where c.Products.Any(p => p.Discontinued) select c;

生成SQL语句为:

SELECT [t0].[CategoryID], [t0].[CategoryName], [t0].[Description], [t0].[Picture] FROM[dbo].[Categories] AS [t0] WHERE EXISTS( SELECT NULL AS [EMPTY] FROM [dbo].[Products]AS [t1] WHERE ([t1].[Discontinued] = 1) AND ([t1].[CategoryID] = [t0].[CategoryID]) )

All


说明:用于判断集合中所有元素是否都满足某一条件;不延迟

1.带条件形式

var q = from c in db.Customers where c.Orders.All(o => o.ShipCity == c.City) select c;

语句描述:这个例子返回所有订单都运往其所在城市的客户或未下订单的客户。

Contains


说明:用于判断集合中是否包含有某一元素;不延迟。它是对两个序列进行连接操作的。
string[] customerID_Set = new string[] { "AROUT", "BOLID", "FISSA" }; var q = ( from oin db.Orders where customerID_Set.Contains(o.CustomerID) select o).ToList();
语句描述:查找"AROUT", "BOLID" 和 "FISSA" 这三个客户的订单。先定义了一个数组,在LINQ to SQL中使用Contains,数组中包含了所有的CustomerID,即返回结果中,所有的CustomerID都在这个集合内。也就是in。 你也可以把数组的定义放在LINQ to SQL语句里。比如:
var q = ( from o in db.Orders where ( new string[] { "AROUT", "BOLID", "FISSA" }) .Contains(o.CustomerID) select o).ToList();
Not Contains 则取反:
var q = ( from o in db.Orders where !( new string[] { "AROUT", "BOLID", "FISSA" }).Contains(o.CustomerID) select o).ToList();

1.包含一个对象:

var order = (from o in db.Orders where o.OrderID == 10248 select o).First(); var q = db.Customers.Where(p => p.Orders.Contains(order)).ToList(); foreach (var cust in q) {foreach (var ord in cust.Orders) { //do something } }
语句描述:这个例子使用Contain查找哪个客户包含OrderID为10248的订单。

2.包含多个值:

string[] cities = new string[] { "Seattle", "London", "Vancouver", "Paris" }; var q = db.Customers.Where(p=>cities.Contains(p.City)).ToList();

语句描述:这个例子使用Contains查找其所在城市为西雅图、伦敦、巴黎或温哥华的客户。