使用 LINQ 筛选 C# 中的数据

筛选是指将结果集限制为仅包含满足指定条件的元素的操作。 它也称为“选择”与指定条件匹配的元素。

重要

这些示例使用 System.Collections.Generic.IEnumerable<T> 数据源。 基于 System.Linq.IQueryProvider 的数据源使用 System.Linq.IQueryable<T> 数据源和表达式树。 表达式树对允许的 C# 语法有限制。 此外,每个 IQueryProvider 数据源(如 EF Core)可能会施加更多限制。 查看数据源的文档。

下图演示了对字符序列进行筛选的结果。 筛选操作的谓词指定字符必须为“A”。

显示 LINQ 筛选操作的图表

下表中列出了执行选择的标准查询运算符方法:

方法名 描述 C# 查询表达式语法 详细信息
OfType 根据其转换为特定类型的能力选择值。 不适用。 Enumerable.OfType

Queryable.OfType
Where 选择基于谓词函数的值。 where Enumerable.Where

Queryable.Where

以下示例使用 where 子句从数组中筛选具有特定长度的字符串。

string[] words = ["the", "quick", "brown", "fox", "jumps"];

IEnumerable<string> query = from word in words
                            where word.Length == 3
                            select word;

foreach (string str in query)
{
    Console.WriteLine(str);
}

/* This code produces the following output:

    the
    fox
*/

以下代码显示了使用方法语法的等效查询:

string[] words = ["the", "quick", "brown", "fox", "jumps"];

IEnumerable<string> query =
    words.Where(word => word.Length == 3);

foreach (string str in query)
{
    Console.WriteLine(str);
}

/* This code produces the following output:

    the
    fox
*/

另请参阅