Enumerable.Where Metod

Definition

Filtrerar en sekvens med värden baserat på ett predikat.

Överlagringar

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

Filtrerar en sekvens med värden baserat på ett predikat. Varje elements index används i logiken i predikatfunktionen.

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

Filtrerar en sekvens med värden baserat på ett predikat.

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

Filtrerar en sekvens med värden baserat på ett predikat. Varje elements index används i logiken i predikatfunktionen.

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)

Typparametrar

TSource

Typen av element sourcei .

Parametrar

source
IEnumerable<TSource>

En IEnumerable<T> att filtrera.

predicate
Func<TSource,Int32,Boolean>

En funktion för att testa varje källelement för ett villkor. den andra parametern för funktionen representerar indexet för källelementet.

Returer

IEnumerable<TSource>

En IEnumerable<T> som innehåller element från indatasekvensen som uppfyller villkoret.

Undantag

source eller predicate är null.

Exempel

Följande kodexempel visar hur du använder Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) för att filtrera en sekvens baserat på ett predikat som omfattar indexet för varje 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
Console.WriteLine(output.ToString())

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

Kommentarer

Den här metoden implementeras med uppskjuten körning. Det omedelbara returvärdet är ett objekt som lagrar all information som krävs för att utföra åtgärden. Frågan som representeras av den här metoden körs inte förrän objektet räknas upp antingen genom att anropa metoden GetEnumerator direkt eller med hjälp av foreach i C# eller For Each i Visual Basic.

Det första argumentet predicate i representerar elementet som ska testas. Det andra argumentet representerar det nollbaserade indexet för elementet i source.

Gäller för

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

Filtrerar en sekvens med värden baserat på ett predikat.

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)

Typparametrar

TSource

Typen av element sourcei .

Parametrar

source
IEnumerable<TSource>

En IEnumerable<T> att filtrera.

predicate
Func<TSource,Boolean>

En funktion för att testa varje element för ett villkor.

Returer

IEnumerable<TSource>

En IEnumerable<T> som innehåller element från indatasekvensen som uppfyller villkoret.

Undantag

source eller predicate är null.

Exempel

Följande kodexempel visar hur du använder Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) för att filtrera en sekvens.

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
Console.WriteLine(output.ToString())

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

Kommentarer

Den här metoden implementeras med uppskjuten körning. Det omedelbara returvärdet är ett objekt som lagrar all information som krävs för att utföra åtgärden. Frågan som representeras av den här metoden körs inte förrän objektet räknas upp antingen genom att anropa metoden GetEnumerator direkt eller med hjälp av foreach i C# eller For Each i Visual Basic.

I frågeuttryckssyntax översätts en where (C#) eller Where-sats (Visual Basic) till ett anrop av Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>).

Se även

Gäller för