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
看看他生成的SQL,我们就知道原因了
All: IQueryable<Test>.All(t=>t.OpenId=="")
2 DECLARE @p0 NVarChar(1000) = ''
3 -- EndRegion
4 SELECT
5 (CASE
6 WHEN NOT (EXISTS(
7 SELECT NULL AS [EMPTY]
8 FROM [Test] AS [t1]
9 WHERE (
10 (CASE
11 WHEN [t1].[OpenId] = @p0 THEN 1
12 ELSE 0
13 END)) = 0
14 )) THEN 1
15 WHEN NOT NOT (EXISTS(
16 SELECT NULL AS [EMPTY]
17 FROM [Test] AS [t1]
18 WHERE (
19 (CASE
20 WHEN [t1].[OpenId] = @p0 THEN 1
21 ELSE 0
22 END)) = 0
23 )) THEN 0
24 ELSE NULL
25 END) AS [value]
可以看得出来, All 是用的 Not (Exists) , 当Query为空的时候,Exists是为false的,而前面一个Not (false),当然也成为了True;
Any: IQueryable<Test>.Any(t=>t.OpenId=="")
1 -- Region Parameters
3 -- EndRegion
4 SELECT
5 (CASE
6 WHEN EXISTS(
7 SELECT NULL AS [EMPTY]
8 FROM [Test] AS [t0]
9 WHERE [t0].[OpenId] = @p0
10 ) THEN 1
11 ELSE 0
12 END) AS [value]
可以看出 Any生成的是Exists。 当Query为空的时候,Exists是为false的。
转载于:https://www.cnblogs.com/AaronAndJoe/p/4642231.html
Linq 中 Any与All相关推荐
- 用日志记录LINQ中的所有增删改的SQL语句的方法
我们知道LINQ中的增删改都要调用SubmitChanges方法,我们记录所有SQL的方式就是重写(override)DataContext中的SubmitChanges方法,为了避免每次修改dbml ...
- Linq中的Where与SkipWhile
本文将介绍Linq中的Where与SkipWhile的用法,有时我们容易混淆它们.下面来看一个简单的UnitTest: [TestMethod] public void TestSkipWhileAn ...
- LINQ中ForEach方法的使用
标签: linq 2016-06-25 12:47 409人阅读 评论(0) 收藏 举报分类: LINQ(5) 我の原创(113) 版权声明:本文为博主原创文章,未经博主允许不得转载.LINQ中For ...
- Linq中的group by多表多字段,Sum求和
Linq中的group by多表多字段,Sum求和 //Line to Sql 写法var data = (from a in Itemsgroup a by new { a.GroupId, a.I ...
- C#8.0: 在 LINQ 中支持异步的 IAsyncEnumerableT接口
C# 8.0中,提供了一种新的IAsyncEnumerable<T>接口,在对集合进行迭代时,支持异步操作.比如在读取文本中的多行字符串时,如果读取每行字符串的时候使用同步方法,那么会导致 ...
- Linq中string转int的方法
Linq中string转int的方法 在做批量删除时,需把一串id值所对应的数据删除,调试出现问题: Linq语句中如果使用ToString()进行类型转换,编译时不会报错,但执行时会出现如下错误: ...
- 转载Linq中GroupBy方法的使用总结
Group在SQL经常使用,通常是对一个字段或者多个字段分组,求其总和,均值等. Linq中的Groupby方法也有这种功能.具体实现看代码: 假设有如下的一个数据集: public class St ...
- linq中let关键字学习
linq中let关键字就是对子查询的一个别名,let子句用于在查询中添加一个新的局部变量,使其在后面的查询中可见. linq中let关键字实例 1.传统下的子查询与LET关键字的区别 C# 代码 ...
- linq中给字段添加别名
linq 是我们在查询中经常回用到的一种形式,比如我们创建一个类,然后List<添加> 并绑定到表格中public class Modeltest{string id;public str ...
- LINQ中的Lambda表达式
Lambda Expressions in LINQ 在第12章,我提到可以用lambda表达式定义内联的委托定义.在如下表达式中: customer => customer.FirstName ...
最新文章
- 我的android studio开发环境搭建历程(一部辛酸史)
- 您可能不知道的ASP.Net小技巧
- 不使用GACUtil.exe,如何部署和卸载程序集到GAC中
- 单片机红外通信c语言,基于C语言的计算机与多单片机红外无线串口通信的实现.doc...
- Python入门教学之(转义字符与原字符)
- ARM Cortex-M0(1)---浅谈ARM Cortex-M0
- SAP License:SAP货币转换
- Atlas系列一:Atlas功能特点FAQ
- 微型计算机原理及应用论文,微机原理及应用结业论文
- 常用分析模型---RFM客户价值模型
- AutoCAD中禁用shift+鼠标中键组合作为动态观察的功能
- 软件测试 技术类面试题问题集锦
- Canvas绘制六边形网格
- CentOS 7 升级Python2.7到Pyton3.6
- uc7.5java下载,uc浏览器7.5版手机下载-uc浏览器7.5官方版v7.5 安卓版 - 极光下载站...
- 记录关于富文本编辑器出现的不能插入图片问题
- 教室计算机英语怎么读,教室英文怎么读?
- 安卓设备脱离pc自动化测试,Termux模拟器下python+uiautomator2的环境设置。本人亲测,踩坑总结。
- IDEA 206个快捷键 动图演示,键盘侠标配
- C#利用DirectX显示.x三维动画
热门文章
- 操作系统锁的实现方法有哪几种_「从入门到放弃-Java」并发编程-锁-synchronized...
- lepus监控oracle数据库_lepus天兔数据库监控系统搭建记录
- vbs打开软件光标停在第一个输入框_三维设计软件,3DMAX最全快捷键大全,赶快收藏哦...
- 入门 | 初学者必读:解读14个深度学习关键词
- [C语言]为什么要有include?——从Hello World说起
- Python 命令汇总
- Tensorflow官方文档---起步 MNIST示例
- selenium python 入门-元素定位
- Primer c++ 第5版pdf
- rabbitmq队列的exclusive,durability,auto-delete属性以及消息可靠传输设计