Enumerable.Where Enumerable.Where Enumerable.Where Enumerable.Where Method

定义

基于谓词筛选值序列。Filters a sequence of values based on a predicate.

重载

Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

基于谓词筛选值序列。Filters a sequence of values based on a predicate.

Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)

基于谓词筛选值序列。Filters a sequence of values based on a predicate. 将在谓词函数的逻辑中使用每个元素的索引。Each element's index is used in the logic of the predicate function.

Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

基于谓词筛选值序列。Filters a sequence of values based on a predicate.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TSource> ^ Where(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate);
public static System.Collections.Generic.IEnumerable<TSource> Where<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
static member Where : seq<'Source> * Func<'Source, bool> -> seq<'Source>
<Extension()>
Public Function Where(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean)) As IEnumerable(Of TSource)

类型参数

TSource

source 的元素类型。The type of the elements of source.

参数

source
IEnumerable<TSource>

要筛选的 IEnumerable<T>An IEnumerable<T> to filter.

predicate
Func<TSource,Boolean>

用于测试每个元素是否满足条件的函数。A function to test each element for a condition.

返回

IEnumerable<TSource>

一个包含输入序列中满足条件的元素的 IEnumerable<T>An IEnumerable<T> that contains elements from the input sequence that satisfy the condition.

异常

sourcepredicatenullsource or predicate is null.

示例

下面的代码示例演示如何使用Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)来筛选序列。The following code example demonstrates how to use Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) to filter a sequence.

List<string> fruits =
    new List<string> { "apple", "passionfruit", "banana", "mango", 
                    "orange", "blueberry", "grape", "strawberry" };

IEnumerable<string> query = fruits.Where(fruit => fruit.Length < 6);

foreach (string fruit in query)
{
    Console.WriteLine(fruit);
}
/*
 This code produces the following output:

 apple
 mango
 grape
*/
' Create a list of strings.
Dim fruits As New List(Of String)(New String() _
                    {"apple", "passionfruit", "banana", "mango",
                     "orange", "blueberry", "grape", "strawberry"})

' Restrict the results to those strings whose 
' length is less than six.
Dim query As IEnumerable(Of String) =
fruits.Where(Function(fruit) fruit.Length < 6)

' Display the results.
Dim output As New System.Text.StringBuilder
For Each fruit As String In query
    output.AppendLine(fruit)
Next
MsgBox(output.ToString())

' This code produces the following output:
'
' apple
' mango
' grape

注解

此方法实现通过使用延迟的执行。This method is implemented by using deferred execution. 即时的返回值是存储执行操作所需的所有信息的对象。The immediate return value is an object that stores all the information that is required to perform the action. 直到或者通过调用枚举的对象不执行此方法所表示的查询及其GetEnumerator方法直接或通过使用foreach在 Visual C# 或For Each在 Visual Basic 中。The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

在查询表达式语法where(Visual C#) 或Where(Visual Basic) 子句转换为调用Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)In query expression syntax, a where (Visual C#) or Where (Visual Basic) clause translates to an invocation of Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>).

另请参阅

Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)

基于谓词筛选值序列。Filters a sequence of values based on a predicate. 将在谓词函数的逻辑中使用每个元素的索引。Each element's index is used in the logic of the predicate function.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TSource> ^ Where(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, int, bool> ^ predicate);
public static System.Collections.Generic.IEnumerable<TSource> Where<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,int,bool> predicate);
static member Where : seq<'Source> * Func<'Source, int, bool> -> seq<'Source>
<Extension()>
Public Function Where(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Integer, Boolean)) As IEnumerable(Of TSource)

类型参数

TSource

source 的元素类型。The type of the elements of source.

参数

source
IEnumerable<TSource>

要筛选的 IEnumerable<T>An IEnumerable<T> to filter.

predicate
Func<TSource,Int32,Boolean>

用于测试每个源元素是否满足条件的函数;该函数的第二个参数表示源元素的索引。A function to test each source element for a condition; the second parameter of the function represents the index of the source element.

返回

IEnumerable<TSource>

一个包含输入序列中满足条件的元素的 IEnumerable<T>An IEnumerable<T> that contains elements from the input sequence that satisfy the condition.

异常

sourcepredicatenullsource or predicate is null.

示例

下面的代码示例演示如何使用Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)来筛选序列基于一个谓词,涉及的每个元素的索引。The following code example demonstrates how to use Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) to filter a sequence based on a predicate that involves the index of each element.

int[] numbers = { 0, 30, 20, 15, 90, 85, 40, 75 };

IEnumerable<int> query =
    numbers.Where((number, index) => number <= index * 10);

foreach (int number in query)
{
    Console.WriteLine(number);
}
/*
 This code produces the following output:

 0
 20
 15
 40
*/
' Create an array of integers.
Dim numbers() As Integer = {0, 30, 20, 15, 90, 85, 40, 75}

' Restrict the results to those numbers whose
' values are less than or equal to their index times 10.
Dim query As IEnumerable(Of Integer) =
numbers.Where(Function(number, index) number <= index * 10)

' Display the results.
Dim output As New System.Text.StringBuilder
For Each number As Integer In query
    output.AppendLine(number)
Next
MsgBox(output.ToString())

' This code produces the following output:
'
' 0
' 20
' 15
' 40

注解

此方法实现通过使用延迟的执行。This method is implemented by using deferred execution. 即时的返回值是存储执行操作所需的所有信息的对象。The immediate return value is an object that stores all the information that is required to perform the action. 直到或者通过调用枚举的对象不执行此方法所表示的查询及其GetEnumerator方法直接或通过使用foreach在 Visual C# 或For Each在 Visual Basic 中。The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

第一个参数predicate表示要测试的元素。The first argument of predicate represents the element to test. 第二个参数表示内的元素的从零开始索引sourceThe second argument represents the zero-based index of the element within source.

适用于