Enumerable.TakeWhile Metoda

Definicja

Zwraca elementy z sekwencji tak długo, jak określony warunek ma wartość true, a następnie pomija pozostałe elementy.Returns elements from a sequence as long as a specified condition is true, and then skips the remaining elements.

Przeciążenia

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

Zwraca elementy z sekwencji tak długo, jak określony warunek ma wartość true.Returns elements from a sequence as long as a specified condition is true.

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

Zwraca elementy z sekwencji tak długo, jak określony warunek ma wartość true.Returns elements from a sequence as long as a specified condition is true. Indeks elementu jest używany w logice funkcji predykatu.The element's index is used in the logic of the predicate function.

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

Zwraca elementy z sekwencji tak długo, jak określony warunek ma wartość true.Returns elements from a sequence as long as a specified condition is 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 source .The type of the elements of source.

Parametry

source
IEnumerable<TSource>

Sekwencja, z której mają zostać zwrócone elementy.A sequence to return elements from.

predicate
Func<TSource,Boolean>

Funkcja testowania każdego elementu na stanie.A function to test each element for a condition.

Zwraca

IEnumerable<TSource>

Element IEnumerable<T> zawierający elementy z sekwencji wejściowej, która występuje przed elementem, w którym test nie jest już przekazywany.An IEnumerable<T> that contains the elements from the input sequence that occur before the element at which the test no longer passes.

Wyjątki

source lub predicate jest null .source or predicate is null.

Przykłady

Poniższy przykład kodu demonstruje, jak używać TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) do zwracania elementów z początku sekwencji tak długo, jak warunek ma wartość true.The following code example demonstrates how to use TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) to return elements from the start of a sequence as long as a condition is true.

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.This method is implemented by using deferred execution. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji.The immediate return value is an object that stores all the information that is required to perform the action. Zapytanie reprezentowane przez tę metodę nie jest wykonywane do momentu wyliczenia obiektu przez wywołanie jego GetEnumerator metody bezpośrednio lub przy użyciu foreach w Visual C# lub For Each w 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.

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)Metoda sprawdza każdy element przy source użyciu predicate i daje element, jeśli wynik jest true .The TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) method tests each element of source by using predicate and yields the element if the result is true. Wyliczenie jest zatrzymywane, gdy funkcja predykatu zwraca false dla elementu lub gdy source nie zawiera żadnych elementów.Enumeration stops when the predicate function returns false for an element or when source contains no more elements.

TakeWhileMetody i SkipWhile są uzupełnieniem funkcjonalnym.The TakeWhile and SkipWhile methods are functional complements. Uwzględniając sekwencję coll i czystą funkcję p , łączenie wyników coll.TakeWhile(p) i coll.SkipWhile(p) daje taką samą sekwencję jak coll .Given a sequence coll and a pure function p, concatenating the results of coll.TakeWhile(p) and coll.SkipWhile(p) yields the same sequence as coll.

W Visual Basic składni wyrażenia zapytania, Take While klauzula tłumaczy na wywołanie TakeWhile .In Visual Basic query expression syntax, a Take While clause translates to an invocation of TakeWhile.

Zobacz też

Dotyczy

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

Zwraca elementy z sekwencji tak długo, jak określony warunek ma wartość true.Returns elements from a sequence as long as a specified condition is true. Indeks elementu jest używany w logice funkcji predykatu.The 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> ^ 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 source .The type of the elements of source.

Parametry

source
IEnumerable<TSource>

Sekwencja, z której mają zostać zwrócone elementy.The sequence to return elements from.

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.A function to test each source element for a condition; the second parameter of the function represents the index of the source element.

Zwraca

IEnumerable<TSource>

IEnumerable<T>Zawiera elementy z sekwencji wejściowej, która występuje przed elementem, w którym test nie jest już przekazywany.An IEnumerable<T> that contains elements from the input sequence that occur before the element at which the test no longer passes.

Wyjątki

source lub predicate jest null .source or predicate is null.

Przykłady

Poniższy przykład kodu demonstruje, jak używać TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) do zwracania elementów z początku sekwencji tak długo, jak warunek, który używa indeksu elementu ma wartość true.The following code example demonstrates how to use TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) to return elements from the start of a sequence as long as a condition that uses the element's index is 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.This method is implemented by using deferred execution. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji.The immediate return value is an object that stores all the information that is required to perform the action. Zapytanie reprezentowane przez tę metodę nie jest wykonywane do momentu wyliczenia obiektu przez wywołanie jego GetEnumerator metody bezpośrednio lub przy użyciu foreach w Visual C# lub For Each w 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.

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)Metoda sprawdza każdy element przy source użyciu predicate i daje element, jeśli wynik jest true .The TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) method tests each element of source by using predicate and yields the element if the result is true. Wyliczenie jest zatrzymywane, gdy funkcja predykatu zwraca false dla elementu lub gdy source nie zawiera żadnych elementów.Enumeration stops when the predicate function returns false for an element or when source contains no more elements.

Pierwszy argument predicate przedstawia element do przetestowania.The first argument of predicate represents the element to test. Drugi argument reprezentuje indeks (liczony od zera) elementu w source .The second argument represents the zero-based index of the element within source.

TakeWhileMetody i SkipWhile są uzupełnieniem funkcjonalnym.The TakeWhile and SkipWhile methods are functional complements. Uwzględniając sekwencję coll i czystą funkcję p , łączenie wyników coll.TakeWhile(p) i coll.SkipWhile(p) daje taką samą sekwencję jak coll .Given a sequence coll and a pure function p, concatenating the results of coll.TakeWhile(p) and coll.SkipWhile(p) yields the same sequence as coll.

W Visual Basic składni wyrażenia zapytania, Take While klauzula tłumaczy na wywołanie TakeWhile .In Visual Basic query expression syntax, a Take While clause translates to an invocation of TakeWhile.

Zobacz też

Dotyczy