
LINQ之Where
发布日期:2021-05-07 00:14:38
浏览次数:28
分类:精选文章
本文共 3477 字,大约阅读时间需要 11 分钟。
Where()方法在LINQ(Language Integrated Query)中是非常强大的工具,用于对集合数据进行筛选操作。它允许开发者通过定义条件,过滤出满足条件的元素。这一方法的核心作用是从数据源中提取所需的信息,简化数据处理流程。
Where()方法简介
Where()方法的主要功能是根据指定的条件筛选集合中的元素。它接收两个参数:数据源和一个函数,这个函数负责判断每个元素是否符合筛选条件。如果函数返回true,则对应的元素会被包含在结果中;否则,该元素会被排除在外。
Where()方法的高级用法
Where()方法的强大之处在于它支持对数据源中的元素进行索引检查。通过传递一个接受两个参数的函数(第一个参数是元素本身,第二个参数是其在集合中的索引),开发者可以在条件中同时引用元素的值和位置信息。这种功能在处理特定位置的元素时尤为实用。
代码示例
以下是使用Where()方法的示例代码:
public static class Program{ static void Main(string[] args) { int[] dataA = new int[] { 0, 1, 2, 3, 4 }; ListdataB = new List { 1.5f, 1.3f, 3.2f }; string[] dataC = new string[] { "正一郎", "清次郎", "诚三郎", "征史郎" }; // 筛选偶数 IEnumerable dataA_F = dataA.Where(value => value % 2 == 0); // 筛选小于2的元素 IEnumerable dataB_F = dataB.Where(value => value < 2.0f); // 筛选长度小于5的字符串 IEnumerable dataC_F = dataC.Where(value => value.Length < 5); // 输出结果 System.Console.WriteLine("dataA : " + dataA.Text()); System.Console.WriteLine("dataA Filter: " + dataA_F.Text()); System.Console.WriteLine("dataB : " + dataB.Text()); System.Console.WriteLine("dataB Filter: " + dataB_F.Text()); System.Console.WriteLine("dataC : " + dataC.Text()); System.Console.WriteLine("dataC Filter: " + dataC_F.Text()); System.Console.ReadKey(); } public static string Text(this IEnumerable i_source) { string text = string.Empty; foreach (var value in i_source) { text += string.Format("[{0}], ", value); } return text; }}
示例结果
运行上述代码后,输出结果如下:
dataA : [0], [1], [2], [3], [4]dataA Filter: [0], [2], [4]dataB : [1.5], [1.3], [3.2]dataB Filter: [1.5], [3.2]dataC : [正一郎], [清次郎], [诚三郎], [征史郎]dataC Filter: [正一郎], [清次郎], [诚三郎], [征史郎]
使用索引的Where()方法
Where()方法还支持在条件中引用元素的索引信息。以下是使用索引的代码示例:
public static class Program{ static void Main(string[] args) { int[] dataA = new int[] { 0, 1, 2, 3, 4 }; ListdataB = new List { 1.5f, 1.3f, 3.2f }; string[] dataC = new string[] { "正一郎", "清次郎", "诚三郎", "征史郎" }; // 筛选索引和值相等的元素 IEnumerable dataA_F = dataA.Where((value, index) => value == index); // 筛选索引为偶数的元素 IEnumerable dataB_F = dataB.Where((value, index) => index % 2 == 0); // 筛选索引为5的元素 IEnumerable dataC_F = dataC.Where((value, index) => index == 5); // 输出结果 System.Console.WriteLine("dataA : " + dataA.Text()); System.Console.WriteLine("dataA Filter: " + dataA_F.Text()); System.Console.WriteLine("dataB : " + dataB.Text()); System.Console.WriteLine("dataB Filter: " + dataB_F.Text()); System.Console.WriteLine("dataC : " + dataC.Text()); System.Console.WriteLine("dataC Filter: " + dataC_F.Text()); System.Console.ReadKey(); } public static string Text(this IEnumerable i_source) { string text = string.Empty; foreach (var value in i_source) { text += string.Format("[{0}], ", value); } return text; }}
示例结果
运行上述代码后,输出结果如下:
dataA : [0], [1], [2], [3], [4]dataA Filter: [0], [1], [2], [3], [4]dataB : [1.5], [1.3], [3.2]dataB Filter: [1.5], [3.2]dataC : [正一郎], [清次郎], [诚三郎], [征史郎]dataC Filter: [诚三郎]
通过以上示例,可以看出Where()方法在集合数据筛选中的强大能力。无论是简单的值筛选,还是复杂的索引筛选,都能轻松实现。这种方法极大地简化了数据处理流程,提升了开发效率。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月15日 09时11分56秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
elementUi源码解析(1)--项目结构篇
2019-03-06
自动遍历测试之Monkey工具
2019-03-06
Nmap扫描工具介绍
2019-03-06
算法笔记:递归、动态规划
2019-03-06
Pytest插件开发
2019-03-06
常用Windows 快捷键
2019-03-06
linux命令-压缩与打包
2019-03-06
ORACLE 11g 生产中高水位线(HWM)处理
2019-03-06
centos 6.x 编译安装 pgsql 9.6
2019-03-06
weblogic 服务器部署SSL证书
2019-03-06
oracle 11g not in 与not exists 那个高效?
2019-03-06
Linux 安装Redis 5.0(以及参数调优)
2019-03-06
html5 Game开发系列文章之 零[开篇]
2019-03-06
为什么阿里巴巴建议集合初始化时,指定集合容量大小
2019-03-06
为什么阿里巴巴要求谨慎使用ArrayList中的subList方法
2019-03-06
Redis不是一直号称单线程效率也很高吗,为什么又采用多线程了?
2019-03-06
基于Python的Appium环境搭建合集
2019-03-06
Requests实践详解
2019-03-06