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 };        List
dataB = 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 };        List
dataB = 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()方法在集合数据筛选中的强大能力。无论是简单的值筛选,还是复杂的索引筛选,都能轻松实现。这种方法极大地简化了数据处理流程,提升了开发效率。

上一篇:LINQ之All
下一篇:LINQ之DefaultIfEmpty

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年04月15日 09时11分56秒