Enumerable.TakeWhile Metoda

Definice

Vrátí prvky z sekvence, pokud je zadaná podmínka pravdivá, a poté zbývající prvky přeskočí.Returns elements from a sequence as long as a specified condition is true, and then skips the remaining elements.

Přetížení

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

Vrátí prvky z sekvence, pokud je zadaná podmínka pravdivá.Returns elements from a sequence as long as a specified condition is true.

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

Vrátí prvky z sekvence, pokud je zadaná podmínka pravdivá.Returns elements from a sequence as long as a specified condition is true. Index elementu se používá v Logic funkce predikátu.The element's index is used in the logic of the predicate function.

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

Vrátí prvky z sekvence, pokud je zadaná podmínka pravdivá.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 prvků source .The type of the elements of source.

Parametry

source
IEnumerable<TSource>

Sekvence, ze které se mají vracet prvkyA sequence to return elements from.

predicate
Func<TSource,Boolean>

Funkce pro otestování každého prvku podmínky.A function to test each element for a condition.

Návraty

IEnumerable<TSource>

IEnumerable<T>Obsahuje prvky ze vstupní sekvence, které se vyskytují před prvkem, na kterém test již neprojde.An IEnumerable<T> that contains the elements from the input sequence that occur before the element at which the test no longer passes.

Výjimky

source nebo predicate je null .source or predicate is null.

Příklady

Následující příklad kódu ukazuje, jak použít TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) k vrácení prvků od začátku sekvence, pokud je podmínka pravdivá.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

Poznámky

Tato metoda je implementována pomocí odloženého provedení.This method is implemented by using deferred execution. Okamžitá návratová hodnota je objekt, který ukládá všechny informace, které jsou požadovány k provedení této akce.The immediate return value is an object that stores all the information that is required to perform the action. Dotaz reprezentovaný touto metodou není proveden, dokud se nevytvoří výčet objektu buď voláním GetEnumerator metody přímo nebo pomocí foreach jazyka Visual C# nebo 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.

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)Metoda testuje každý prvek pomocí source a vrátí prvek, predicate Pokud je výsledek 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. Výčet se zastaví, když se funkce predikátu vrátí false pro element nebo když source neobsahuje žádné další prvky.Enumeration stops when the predicate function returns false for an element or when source contains no more elements.

TakeWhileMetody a SkipWhile jsou funkční příplatnou.The TakeWhile and SkipWhile methods are functional complements. S ohledem na sekvenci coll a funkci Pure p , která zřetězí výsledky coll.TakeWhile(p) a vrátí coll.SkipWhile(p) stejnou sekvenci jako 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.

V Visual Basic syntaxe výrazu dotazu se Take While klauzule převede na vyvolání TakeWhile .In Visual Basic query expression syntax, a Take While clause translates to an invocation of TakeWhile.

Viz také

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

Vrátí prvky z sekvence, pokud je zadaná podmínka pravdivá.Returns elements from a sequence as long as a specified condition is true. Index elementu se používá v Logic funkce predikátu.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 prvků source .The type of the elements of source.

Parametry

source
IEnumerable<TSource>

Sekvence, ze které se mají vracet prvkyThe sequence to return elements from.

predicate
Func<TSource,Int32,Boolean>

Funkce pro otestování každého zdrojového elementu podmínky; druhý parametr funkce představuje index zdrojového elementu.A function to test each source element for a condition; the second parameter of the function represents the index of the source element.

Návraty

IEnumerable<TSource>

IEnumerable<T>Obsahuje prvky ze vstupní sekvence, které se vyskytují před prvkem, na kterém test již neprojde.An IEnumerable<T> that contains elements from the input sequence that occur before the element at which the test no longer passes.

Výjimky

source nebo predicate je null .source or predicate is null.

Příklady

Následující příklad kódu ukazuje, jak použít TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) k vrácení prvků od začátku sekvence, dokud podmínka, která používá index elementu, je 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

Poznámky

Tato metoda je implementována pomocí odloženého provedení.This method is implemented by using deferred execution. Okamžitá návratová hodnota je objekt, který ukládá všechny informace, které jsou požadovány k provedení této akce.The immediate return value is an object that stores all the information that is required to perform the action. Dotaz reprezentovaný touto metodou není proveden, dokud se nevytvoří výčet objektu buď voláním GetEnumerator metody přímo nebo pomocí foreach jazyka Visual C# nebo 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.

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)Metoda testuje každý prvek pomocí source a vrátí prvek, predicate Pokud je výsledek 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. Výčet se zastaví, když se funkce predikátu vrátí false pro element nebo když source neobsahuje žádné další prvky.Enumeration stops when the predicate function returns false for an element or when source contains no more elements.

První argument predicate elementu představuje prvek, který se má otestovat.The first argument of predicate represents the element to test. Druhý argument představuje index založený na nule elementu v rámci source .The second argument represents the zero-based index of the element within source.

TakeWhileMetody a SkipWhile jsou funkční příplatnou.The TakeWhile and SkipWhile methods are functional complements. S ohledem na sekvenci coll a funkci Pure p , která zřetězí výsledky coll.TakeWhile(p) a vrátí coll.SkipWhile(p) stejnou sekvenci jako 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.

V Visual Basic syntaxe výrazu dotazu se Take While klauzule převede na vyvolání TakeWhile .In Visual Basic query expression syntax, a Take While clause translates to an invocation of TakeWhile.

Viz také

Platí pro