Any
说明:用于判断集合中是否有元素满足某一条件;不延迟。(若条件为空,则集合只要不为空就返回True,否则为False)。
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]
))

All
说明:用于判断集合中所有元素是否都满足某一条件;不延迟
var q =
from c in db.Customers
where c.Orders.All(o => o.ShipCity == c.City)
select c;

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

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

昨天突然看到之前写的一个积累文档,其中文档中有一个Linq Any和All的注意事项:
 
 

注意Any 和 All

var list = new List<int>();

var aa = list.All(n => n > 1);

var bb = list.Any(n => n > 1);

// aa: true       bb: false

 
 其中List是一个元素个数为0的整型List。
可能大多数人跟我一样,第一次见到都会认为aa为false。
然后这个是我在程序中写Linq的时候,造成了很大困惑,明明条件是正确的(当时一直认为aa为false),却结果不对。 
最后一句一句,一个条件一个条件的拆分了执行,才找到这个原因。
看看他生成的SQL,我们就知道原因了

All:      IQueryable<Test>.All(t=>t.OpenId=="")

-- Region Parameters
DECLARE @p0 NVarChar(1000) = ''
-- EndRegion
SELECT
(CASE
WHEN NOT (EXISTS(
SELECT NULL AS [EMPTY]
FROM [Test] AS [t1]
WHERE (
(CASE
WHEN [t1].[OpenId] = @p0 THEN 1
ELSE 0
END)) = 0
)) THEN 1
WHEN NOT NOT (EXISTS(
SELECT NULL AS [EMPTY]
FROM [Test] AS [t1]
WHERE (
(CASE
WHEN [t1].[OpenId] = @p0 THEN 1
ELSE 0
END)) = 0
)) THEN 0
ELSE NULL
END) AS [value]

可以看得出来, All 是用的 Not (Exists) , 当Query为空的时候,Exists是为false的,而前面一个Not (false),当然也成为了True;

Any:          IQueryable<Test>.Any(t=>t.OpenId=="")

DECLARE @p0 NVarChar(1000) = ''
-- EndRegion
SELECT
(CASE
WHEN EXISTS(
SELECT NULL AS [EMPTY]
FROM [Test] AS [t0]
WHERE [t0].[OpenId] = @p0
) THEN 1
ELSE 0
END) AS [value]

可以看出   Any生成的是Exists。  当Query为空的时候,Exists是为false的。

linq to sql any和all的区别的更多相关文章

  1. LINQ / LINQ to SQL / LINQ to XXX 它们到底有什么区别

    LINQ是新生事物,不过从不少文章和讨论上看来,这方面的概念也已经有点混沌不清了.因此我们经常可以看到这样的话: LINQ只能将数据表与实体属性一一对应…… LINQ开发指南:在LINQ中进行数据库字 ...

  2. linq to sql 和linq to php 的区别

    linq to sql 这是自.net框架3.5版本以上做出了相关规定. linq to php .Net的linq库的忠实移植到PHP 这个库使得大量使用匿名函数在PHP 5.3中引入的功能.因此, ...

  3. .NET面试题系列[14] - LINQ to SQL与IQueryable

    .NET面试题系列目录 名言警句 "理解IQueryable的最简单方式就是,把它看作一个查询,在执行的时候,将会生成结果序列." - Jon Skeet LINQ to Obje ...

  4. LINQ之路 9:LINQ to SQL 和 Entity Framework(上)

    在上一篇中,我们从理论和概念上详细的了解了LINQ的第二种架构“解释查询”.在这接下来的二个篇章中,我们将使用LINQ to SQL和Entity Framework来实践“解释查询”,学习这些技术的 ...

  5. [转]Entity Framework vs. LINQ to SQL

    Entity Framework和LINQ to SQL到底有什么区别?这是一个很常见的问题.下面的表中简要罗列了两种技术的主要区别. LINQ to SQL Entity Framework 复杂度 ...

  6. LINQ to SQL和Entity Framework对比与关联 (转载)

    LINQ to SQL和Entity Framework对比与关联       LINQ to SQL和Entity Framework都是一种包含LINQ功能的对象关系映射技术.他们之间的本质区别在 ...

  7. 步步学LINQ to SQL:为实体类添加关系【转】

    [IT168 专稿]本文详细为你阐述了如何在你的应用程序中实现LINQ to SQL.附件的示例程序包括了这里探讨的所有代码,还提供了一个简单的WPF图形界面程序来显示通过数据绑定返回的结果集. 第一 ...

  8. Linq To sql入门练习 Lambda表达式基础

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. 讲讲Linq to SQL映射(基础篇)

    讲讲Linq to SQL映射(基础篇) 这篇主要讲Linq to  SQL基于属性的映射.即映射数据库,映射表,映射列,映射关系,映射存储过程, 映射函数.然而创建这种映射有三种方法,他们分别是OR ...

随机推荐

  1. Json数据交换一Gson

    Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. 添加依赖 <depe ...

  2. 39 Ubuntu下配置python的vscode开发环境

    0 引言 最近想在ubuntu下搞深度学习,首先配置了python的vscode开发环境.在配置python时,选择了Anaconda3.x,保证了其相对于系统python2.x的独立性.另外,vsc ...

  3. NOIp2018集训test-10-4/test-10-5 (联考四day1/day2)

    这个day1稍微有点毒瘤吧?? DAY1 排列 以前总是把day1t1想太复杂了翻车,差不多往正解的方向想了一下感觉不可能这么复杂这可是noipday1t1啊一定有非常简单的方法然后翻车了?? 题目转 ...

  4. spring-helloworld (1)

    目录 一.eclipse安装springsource-tools插件 二.新建maven工程,引入spring配置 三.添加helloworld类 四.使用springsource-tools插件 创 ...

  5. mac 安装配置使用 mongoldb

    mac 安装配置使用 mongoldb 安装和配置 brew install mongos brew install mongo # 密码就是用户的密码 # 配置数据文件 //如果不配置会出现错误62 ...

  6. jquery操作html元素之( 获取并设置 CSS 类)

    jQuery 操作 CSS jQuery 拥有若干进行 CSS 操作的方法.我们将学习下面这些: addClass() - 向被选元素添加一个或多个类 removeClass() - 从被选元素删除一 ...

  7. 《DSP using MATLAB》Problem 8.46

    下雨了,大风降温,一地树叶,终于进入冬季了 代码: %% ----------------------------------------------------------------------- ...

  8. 搞懂这7个Maven问题,带你吊打面试官!

    Java技术栈 www.javastack.cn 优秀的Java技术公众号 作者:张丰哲 www.jianshu.com/p/20b39ab6a88c 在如今的互联网项目开发当中,特别是Java领域, ...

  9. 春节跳槽最新Java面试题及答案整理

    今天大部分码农同学已经上班了吧,最近也是跳槽人才流动的高峰期,拿了年终奖,找找更好的机会. 小编也面了几家公司了,回来整理下面经分享给大家做个参考.有很多,暂时先分享20道,后续更多会陆续整理分享出来 ...

  10. webservice - 使用JAX-WS注解的方式快速搭建服务端和客户端

    1.Define the interface import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebRe ...