Enumerable.Where Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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.
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
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.
Returer
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>).