Enumerable.TakeWhile Metoda

Definicja

Zwraca elementy z sekwencji, o ile określony warunek jest spełniony, a następnie pomija pozostałe elementy.

Przeciążenia

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

Zwraca elementy z sekwencji, o ile określony warunek ma wartość true. Indeks elementu jest używany w logice funkcji predykatu.

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

Zwraca elementy z sekwencji, o ile określony warunek ma wartość true.

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

Źródło:
Take.cs
Źródło:
Take.cs
Źródło:
Take.cs

Zwraca elementy z sekwencji, o ile określony warunek ma wartość true. Indeks elementu jest używany w logice funkcji predykatu.

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

Parametry typu

TSource

Typ elementów elementu source.

Parametry

source
IEnumerable<TSource>

Sekwencja, z których mają być zwracane elementy.

predicate
Func<TSource,Int32,Boolean>

Funkcja do testowania każdego elementu źródłowego dla warunku; drugi parametr funkcji reprezentuje indeks elementu źródłowego.

Zwraca

IEnumerable<TSource>

Element IEnumerable<T> zawierający elementy z sekwencji danych wejściowych, które występują przed elementem, w którym test nie przechodzi już pomyślnie.

Wyjątki

source lub predicate ma wartość null.

Przykłady

W poniższym przykładzie kodu pokazano, jak używać TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) funkcji do zwracania elementów od początku sekwencji, o ile warunek używający indeksu elementu ma wartość true.

string[] fruits = { "apple", "passionfruit", "banana", "mango",
                      "orange", "blueberry", "grape", "strawberry" };

IEnumerable<string> query =
    fruits.TakeWhile((fruit, index) => fruit.Length >= index);

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

/*
 This code produces the following output:

 apple
 passionfruit
 banana
 mango
 orange
 blueberry
*/
' Create an array of strings.
Dim fruits() As String =
{"apple", "passionfruit", "banana", "mango",
 "orange", "blueberry", "grape", "strawberry"}

' Take strings from the array until one
' of the string's lengths is greater than or
' equal to the string item's index in the array.
Dim query As IEnumerable(Of String) =
fruits.TakeWhile(Function(fruit, index) _
                     fruit.Length >= index)

' 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
' passionfruit
' banana
' mango
' orange
' blueberry

Uwagi

Ta metoda jest implementowana za pomocą odroczonego wykonania. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji. Zapytanie reprezentowane przez tę metodę nie jest wykonywane, dopóki obiekt nie zostanie wyliczone przez wywołanie metody GetEnumerator bezpośrednio lub przy użyciu foreach języka C# lub For Each w Visual Basic.

Metoda TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) sprawdza każdy element source przy użyciu metody predicate i zwraca element, jeśli wynik to true. Wyliczenie zatrzymuje się, gdy funkcja predykatu zwraca false wartość elementu lub gdy source nie zawiera więcej elementów.

Pierwszy argument funkcji predicate reprezentuje element do przetestowania. Drugi argument reprezentuje indeks zerowy elementu w ramach elementu source.

Metody TakeWhile i SkipWhile są uzupełnieniem funkcjonalnym. Biorąc pod uwagę sekwencję kolekcji coll i czystą funkcję p, łączenie wyników coll.TakeWhile(p) i coll.SkipWhile(p) zwraca tę samą sekwencję co coll.

W składni wyrażenia zapytania języka Visual Basic klauzula Take While przekłada się na wywołanie TakeWhileelementu .

Zobacz też

Dotyczy

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

Źródło:
Take.cs
Źródło:
Take.cs
Źródło:
Take.cs

Zwraca elementy z sekwencji, o ile określony warunek ma wartość true.

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

Parametry typu

TSource

Typ elementów elementu source.

Parametry

source
IEnumerable<TSource>

Sekwencja zwracająca elementy z.

predicate
Func<TSource,Boolean>

Funkcja testowania każdego elementu na stanie.

Zwraca

IEnumerable<TSource>

Element IEnumerable<T> zawierający elementy z sekwencji danych wejściowych, które występują przed elementem, w którym test nie przechodzi już pomyślnie.

Wyjątki

source lub predicate ma wartość null.

Przykłady

W poniższym przykładzie kodu pokazano, jak używać TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) funkcji do zwracania elementów od początku sekwencji, o ile warunek jest spełniony.

string[] fruits = { "apple", "banana", "mango", "orange",
                      "passionfruit", "grape" };

IEnumerable<string> query =
    fruits.TakeWhile(fruit => String.Compare("orange", fruit, true) != 0);

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

/*
 This code produces the following output:

 apple
 banana
 mango
*/
' Create an array of strings.
Dim fruits() As String =
{"apple", "banana", "mango", "orange", "passionfruit", "grape"}

' Take strings from the array until one of
' the strings matches "orange".
Dim query As IEnumerable(Of String) =
fruits.TakeWhile(Function(fruit) _
                     String.Compare("orange", fruit, True) <> 0)

' 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
' banana
' mango

Uwagi

Ta metoda jest implementowana za pomocą odroczonego wykonania. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji. Zapytanie reprezentowane przez tę metodę nie jest wykonywane, dopóki obiekt nie zostanie wyliczone przez wywołanie metody GetEnumerator bezpośrednio lub przy użyciu foreach języka C# lub For Each w Visual Basic.

Metoda TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) sprawdza każdy element source przy użyciu metody predicate i zwraca element, jeśli wynik to true. Wyliczenie zatrzymuje się, gdy funkcja predykatu zwraca false wartość elementu lub gdy source nie zawiera więcej elementów.

Metody TakeWhile i SkipWhile są uzupełnieniem funkcjonalnym. Biorąc pod uwagę sekwencję kolekcji coll i czystą funkcję p, łączenie wyników coll.TakeWhile(p) i coll.SkipWhile(p) zwraca tę samą sekwencję co coll.

W składni wyrażenia zapytania języka Visual Basic klauzula Take While przekłada się na wywołanie TakeWhileelementu .

Zobacz też

Dotyczy