Enumerable.TakeWhile Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna elementos de uma sequência desde que uma condição especificada seja verdadeira e, em seguida, ignora os elementos restantes.
Sobrecargas
| Nome | Description |
|---|---|
| TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) |
Retorna elementos de uma sequência desde que uma condição especificada seja verdadeira. |
| TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) |
Retorna elementos de uma sequência desde que uma condição especificada seja verdadeira. O índice do elemento é usado na lógica da função de predicado. |
TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)
Retorna elementos de uma sequência desde que uma condição especificada seja verdadeira.
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.
Parâmetros
- source
- IEnumerable<TSource>
Uma sequência da qual retornar elementos.
Retornos
Um IEnumerable<T> que contém os elementos da sequência de entrada que ocorrem antes do elemento no qual o teste não passa mais.
Exceções
source ou predicate é 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.
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
Comentários
Esse método é implementado usando a execução adiada. O valor de retorno imediato é um objeto que armazena todas as informações necessárias para executar a ação. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando seu método GetEnumerator diretamente ou usando foreach em C# ou For Each em Visual Basic.
O TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) método testa cada elemento usando sourcepredicate e produz o elemento se o resultado for true. A enumeração é interrompida quando a função de predicado retorna false para um elemento ou quando source não contém mais elementos.
Os TakeWhile métodos e os SkipWhile métodos são complementos funcionais. Dada uma sequência coll de coleção e uma função ppura, concatenando os resultados coll.TakeWhile(p) e coll.SkipWhile(p) gerando a mesma sequência que coll.
Em Visual Basic sintaxe de expressão de consulta, uma cláusula Take While se traduz em uma invocação de TakeWhile.
Confira também
- cláusula Take While (Visual Basic)
Aplica-se a
TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)
Retorna elementos de uma sequência desde que uma condição especificada seja verdadeira. O índice do elemento é usado na lógica da função de predicado.
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.
Parâmetros
- source
- IEnumerable<TSource>
A sequência da qual retornar elementos.
Uma função para testar cada elemento de origem para uma condição; o segundo parâmetro da função representa o índice do elemento de origem.
Retornos
Um IEnumerable<T> que contém elementos da sequência de entrada que ocorrem antes do elemento no qual o teste não passa mais.
Exceções
source ou predicate é 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 use o índice do elemento seja verdadeira.
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
Comentários
Esse método é implementado usando a execução adiada. O valor de retorno imediato é um objeto que armazena todas as informações necessárias para executar a ação. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando seu método GetEnumerator diretamente ou usando foreach em C# ou For Each em Visual Basic.
O TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) método testa cada elemento usando sourcepredicate e produz o elemento se o resultado for true. A enumeração é interrompida quando a função de predicado retorna false para um elemento ou quando source não contém mais elementos.
O primeiro argumento representa predicate o elemento a ser testado. O segundo argumento representa o índice baseado em zero do elemento dentro source.
Os TakeWhile métodos e os SkipWhile métodos são complementos funcionais. Dada uma sequência coll de coleção e uma função ppura, concatenando os resultados coll.TakeWhile(p) e coll.SkipWhile(p) gerando a mesma sequência que coll.
Em Visual Basic sintaxe de expressão de consulta, uma cláusula Take While se traduz em uma invocação de TakeWhile.
Confira também
- cláusula Take While (Visual Basic)