Enumerable.TakeWhile Enumerable.TakeWhile Enumerable.TakeWhile Enumerable.TakeWhile Method

Definição

Retorna elementos de uma sequência contanto que uma condição especificada seja true e, em seguida, ignora os elementos restantes.Returns elements from a sequence as long as a specified condition is true, and then skips the remaining elements.

Sobrecargas

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

Retorna os elementos de uma sequência contanto que uma condição especificada seja verdadeira.Returns elements from a sequence as long as a specified condition is true.

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

Retorna os elementos de uma sequência contanto que uma condição especificada seja verdadeira.Returns elements from a sequence as long as a specified condition is true. O índice do elemento é usado na lógica da função de predicado.The element's index is used in the logic of the predicate function.

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

Retorna os elementos de uma sequência contanto que uma condição especificada seja verdadeira.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)

Parâmetros de tipo

TSource

O tipo dos elementos de source.The type of the elements of source.

Parâmetros

source
IEnumerable<TSource>

Uma sequência a qual retornar os elementos.A sequence to return elements from.

predicate
Func<TSource,Boolean>

Uma função para testar cada elemento em relação a uma condição.A function to test each element for a condition.

Retornos

IEnumerable<TSource>

Um IEnumerable<T> que contém elementos da sequência de entrada que ocorrem antes do elemento no qual o teste não é mais aprovado.An IEnumerable<T> that contains the elements from the input sequence that occur before the element at which the test no longer passes.

Exceções

source ou predicate é null.source or predicate is null.

Exemplos

O exemplo de código a seguir demonstra como usar TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) para retornar elementos desde o início de uma sequência, desde que uma condição seja verdadeira.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
MsgBox(output.ToString())

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

Comentários

Esse método é implementado usando a execução adiada.This method is implemented by using deferred execution. O imediata valor retornado é um objeto que armazena todas as informações necessárias para executar a ação.The immediate return value is an object that stores all the information that is required to perform the action. A consulta representada por esse método não é executada até que o objeto é enumerado chamando-se suas GetEnumerator método diretamente ou usando foreach no Visual c# ou For Each no 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.

O TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) método testa cada elemento de source usando predicate , gerando o elemento se o resultado for 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. Enumeração interrompe quando a função de predicado retorna false para um elemento ou quando source não contém mais nenhum elemento.Enumeration stops when the predicate function returns false for an element or when source contains no more elements.

O TakeWhile e SkipWhile métodos são complementa funcional.The TakeWhile and SkipWhile methods are functional complements. Dada uma determinada sequência coll e uma função pura p, concatenando os resultados de coll.TakeWhile(p) e coll.SkipWhile(p) produz a mesma sequência que 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.

Na sintaxe de expressão de consulta do Visual Basic, uma Take While cláusula se traduz em uma invocação de TakeWhile.In Visual Basic query expression syntax, a Take While clause translates to an invocation of TakeWhile.

Veja também

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

Retorna os elementos de uma sequência contanto que uma condição especificada seja verdadeira.Returns elements from a sequence as long as a specified condition is true. O índice do elemento é usado na lógica da função de predicado.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)

Parâmetros de tipo

TSource

O tipo dos elementos de source.The type of the elements of source.

Parâmetros

source
IEnumerable<TSource>

A sequência da qual os elementos serão retornados.The sequence to return elements from.

predicate
Func<TSource,Int32,Boolean>

Uma função para testar cada elemento de origem em relação a uma condição; o segundo parâmetro da função representa o índice do elemento de origem.A function to test each source element for a condition; the second parameter of the function represents the index of the source element.

Retornos

IEnumerable<TSource>

Um IEnumerable<T> que contém elementos da sequência de entrada que ocorrem antes do elemento no qual o teste não é mais aprovado.An IEnumerable<T> that contains elements from the input sequence that occur before the element at which the test no longer passes.

Exceções

source ou predicate é null.source or predicate is null.

Exemplos

O exemplo de código a seguir demonstra como usar TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) para retornar elementos desde o início de uma sequência, desde que uma condição que usa o índice do elemento é verdadeira.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
MsgBox(output.ToString())

' This code produces the following output:
'
' apple
' passionfruit
' banana
' mango
' orange
' blueberry

Comentários

Esse método é implementado usando a execução adiada.This method is implemented by using deferred execution. O imediata valor retornado é um objeto que armazena todas as informações necessárias para executar a ação.The immediate return value is an object that stores all the information that is required to perform the action. A consulta representada por esse método não é executada até que o objeto é enumerado chamando-se suas GetEnumerator método diretamente ou usando foreach no Visual c# ou For Each no 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.

O TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) método testa cada elemento de source usando predicate , gerando o elemento se o resultado for 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. Enumeração interrompe quando a função de predicado retorna false para um elemento ou quando source não contém mais nenhum elemento.Enumeration stops when the predicate function returns false for an element or when source contains no more elements.

O primeiro argumento do predicate representa o elemento a ser testado.The first argument of predicate represents the element to test. O segundo argumento representa o índice baseado em zero do elemento no source.The second argument represents the zero-based index of the element within source.

O TakeWhile e SkipWhile métodos são complementa funcional.The TakeWhile and SkipWhile methods are functional complements. Dada uma determinada sequência coll e uma função pura p, concatenando os resultados de coll.TakeWhile(p) e coll.SkipWhile(p) produz a mesma sequência que 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.

Na sintaxe de expressão de consulta do Visual Basic, uma Take While cláusula se traduz em uma invocação de TakeWhile.In Visual Basic query expression syntax, a Take While clause translates to an invocation of TakeWhile.

Veja também

Aplica-se a