2.4 LINQ中使用where子句指定筛选条件
本篇讲解的内容有:
【1.使用where筛选过滤LINQ查询】
通常一个LINQ查询不会如前面的示例代码这么简单,经常还需要对数据源中的元素进行过滤。只有符合条件的元素,才能参与查询结果的计算。
在LINQ中,用where子句指定查询的过滤条件,它的格式如下:
where expression
其中,expression是一个逻辑表达式,返回布尔值“真”或“假”。
当被查询的元素参与表达式运算返回结果为“真”时,该元素参与查询结果运算。
【2.带条件的where筛选】
where子句中的条件表达式,可以用&&||指定多个条件的逻辑运算关系。其中,&&表示逻辑并,||表示逻辑或。他们的计算关系如下表:
| exp1 | exp2 | exp1&&exp2 | exp1||exp2 |
| 真 | 真 | 真 | 真 |
| 真 | 假 | 假 | 真 |
| 假 | 真 | 假 | 真 |
| 假 | 假 | 假 | 假 |
如下列代码:
- 查询query1采用最简单的where子句条件,查询数组nums中所有大于15的元素。
- 查询query2在where子句的条件中使用&&运算,查询数组nums中大于10且小于40的元素。
- 查询query3在where子句的条件中使用||运算,查询数组nums中小于10或大于40的元素。
static void Main(string[] args)
{
, , , , , , , , , , }; // 创建int数组nums作为数据源
// 查询query1返回nums中所有大于15的元素
var query1 =
(
from numItem in nums
select numItem
);
// 打印query1的数据
foreach (var item in query1)
{
Console.Write("{0}, ", item);
}
Console.WriteLine();
// 查询query2返回nums中所有大于10且小于40的元素,演示&&的使用
var query2 =
(
from numItem in nums
) && (numItem < )
select numItem
);
// 打印query2中的数据
foreach (var item in query2)
{
Console.Write("{0}, ", item);
}
Console.WriteLine();
// 查询query3返回nums中所有小于0或大于40的元素,演示||的使用
var query3 =
(
from numItem in nums
) || (numItem > )
select numItem
);
// 打印query3中的元素
foreach (var item in query3)
{
Console.Write("{0}, ", item);
}
Console.WriteLine();
}
运行结果如下:

【3.多个where筛选子句】
另外,在同一个LINQ查询中,还可以使用多个并列的where子句来进行多个条件过滤。数据源中的元素只有同时满足所有where子句的条件才能作为查询结果。
这样,可以将上面的代码中,query2等价写成下面query4的形式:
// 查询query4返回nums中所有大于10且小于40的元素,演示多个where子句的使用
var query4 =
(
from numItem in nums
select numItem
);
上面的代码,只有同时满足两个where子句中的条件,才会作为查询结果。
技巧:where子句中的条件尽量简短易懂,并且还可以通过函数等方法来提供判断条件,当出现多个逻辑并(&&运算)的条件是,可以考虑使用多个并列的where子句代替。
内容参考:
《精通C#5.0与.NET 4.5高级编程——LINQ、WCF、WPF和WF》
2.4 LINQ中使用where子句指定筛选条件的更多相关文章
- 2.2 LINQ中使用from子句指定数据源
数据源是LINQ查询中必不可少的元素,数据源是实现泛型接口IEnumerable<T>或IQueryable<T>的类对象. 可以将IEnumerable<T>简单 ...
- 2.3 LINQ查询表达式中 使用select子句 指定目标数据
本篇讲解LINQ查询的三种形式: 查询对象 自定义查询对象某个属性 查询匿名类型结果 [1.查询结果返回集合元素] 在LINQ查询中,select子句和from子句都是必备子句.LINQ查询表达式必须 ...
- linq中如何合并多个predicate条件
最近在做一个webAPI 的时候遇到一个需要合并多个predicate条件的问题,下面就是对题的情况.为了方便交流我对case进行了简化,请先看如下代码: using System.Collectio ...
- Linq 学习——将List集合作为筛选条件查询数据
例: A表是一个List集合,B表也是一个List集合 .A与B有一个共同的字段 RecognitionCarCode B表通过RecognitionCarCode去重后拿到两个值{'1','2'}记 ...
- Linq 中查询一个表中指定的字段
//Linq中查询一个表中指定的几个字段: ); // FindAllItems()为查询对应表的所有数据的方法: // Where 里面为查询条件 // Select 为查询的筛选条件 new{} ...
- Linq中关键字的作用及用法
Linq中关键字的作用及用法 1.All:确定序列中的所有元素是否都满足条件.如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false. Demo: 此示例使用 ...
- LINQ中的一些查询语句格式
LINQ的基本格式如下所示:var <变量> = from <项目> in <数据源> where <表达式> orderby <表达式> ...
- C#编程(六十一)------------LINQ中的扩展方法
原文链接: http://blog.csdn.net/shanyongxu/article/details/47208401 LINQ中的扩展方法 LINQ中where扩展方法,要想使用,必须导入us ...
- LINQ查询表达式---------join子句
LINQ查询表达式---------join子句 join 子句接受两个源序列作为输入. 每个序列中的元素都必须是可以与另一个序列中的相应属性进行比较的属性,或者包含一个这样的属性. join子句使用 ...
随机推荐
- dirname
dirname 命令来删除文件路径中最后一个/以及一些背后.当文件通常能够得到一个文件夹. 实例: dean@dean-Latitude-3330:~$ dirname /usr/bin/ /usr ...
- hdu4758 Walk Through Squares (AC自己主动机+DP)
Walk Through Squares Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others ...
- MPQ Storm库 源代码分析 一个
MPQ什么? MPQ维基上说的非常明确. 简而言之,它是暴雪公司用于游戏数据打包的工具.星际争霸,魔兽争霸游戏中都有使用.该工具内含游戏资源加密和压缩等功能. git下载地址:http ...
- 第三十 访问财富进退自如 —Spring交易管理
6月16日本,明确. "应该留给追穷寇勇,不可沽名学霸王.天若有情天亦老,人间正道是沧桑." 有始有终.有往有还.进退自如乃Spring事务管理之道,也是万物生生不息.和谐共处之道 ...
- CI框架学习笔记
打印SQL语句$this->dbRead->last_query(); 重映射方法正如上文所说,URI 的第二段通常决定控制器的哪个方法被调用.CodeIgniter 允许你使用 _rem ...
- SpringMVC使用FileUpload上传文件
进口FileUpload和common-io的Jar包 注意:1.Struts2其它方法需要使用的:struts2过滤,将改变reqeust类型,由HttpServletRequest成为MultiP ...
- 解决cocos2d-x-3.1.1新androidproject
下了个cocos2d-x-3.1.1,依照官方文档一步步配置win7下cocos2d-x-3.1.1的android开发环境,结果没有找到create_project.py这个文件.. 现将具体配置步 ...
- 微信JS-SDK使用权限签名算法的服务端实现(.net版本)
原文:微信JS-SDK使用权限签名算法的服务端实现(.net版本) 一.概要 微信此次开放JS接口,开放了一大批api权限,即使在未认证的订阅号也可以使用图像接口,音频接口,智能接口,地理位置,界面操 ...
- JavaScript学习之获取URL参数
最近看了几道面试题,其中有一道就是关于写一个方法来获取浏览器地址栏URL查询部分的字段内容.虽然之前看过相关的东西,但感觉有点模糊,所以就又全面的学习一遍,谨以此文记之! 准备知识 在JavaScri ...
- React.js终探(七)(完)
我们在前面介绍了组件的各种特性,这一节我们来说说多组件的情况. 在实际开发中,我们的组件难免会遇到有公共部分的情况,如果是个别情况还好,但如果数量比较多的话,那这时候,就需要公用了. 怎么公用呢? R ...