Enumerable.TakeWhile Método

Definición

Devuelve los elementos de una secuencia siempre que el valor de una condición especificada sea true y luego omite los elementos restantes.

Sobrecargas

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

Devuelve los elementos de una secuencia en tanto que el valor de una condición especificada sea true. El índice del elemento se usa en la lógica de la función de predicado.

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

Devuelve los elementos de una secuencia en tanto que el valor de una condición especificada sea true.

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

Devuelve los elementos de una secuencia en tanto que el valor de una condición especificada sea true. El índice del elemento se usa en la lógica de la función 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

Tipo de los elementos de source.

Parámetros

source
IEnumerable<TSource>

Secuencia cuyos elementos se van a devolver.

predicate
Func<TSource,Int32,Boolean>

Función que va a probar cada elemento de origen para determinar si satisface una condición; el segundo parámetro de la función representa el índice del elemento de origen.

Devoluciones

IEnumerable<TSource>

IEnumerable<T> que contiene los elementos de la secuencia de entrada que se encuentran antes del elemento que no supera la prueba.

Excepciones

source o predicate es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) para devolver elementos desde el inicio de una secuencia siempre y cuando se cumpla una condición que use el índice del elemento.

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

Comentarios

Este método se implementa mediante la ejecución diferida. El valor devuelto inmediato es un objeto que almacena toda la información necesaria para realizar la acción. La consulta representada por este método no se ejecuta hasta que el objeto se enumera llamando directamente a su GetEnumerator método o mediante foreach en C# o For Each en Visual Basic.

El TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) método prueba cada elemento de source mediante predicate y produce el elemento si el resultado es true. La enumeración se detiene cuando la función de predicado devuelve false para un elemento o cuando source no contiene más elementos.

El primer argumento de predicate representa el elemento que se va a probar. El segundo argumento representa el índice de base cero del elemento dentro sourcede .

Los TakeWhile métodos y SkipWhile son complementos funcionales. Dada una secuencia coll de colección y una función ppura, concatenando los resultados de coll.TakeWhile(p) y coll.SkipWhile(p) produce la misma secuencia que coll.

En la sintaxis de la expresión de consulta de Visual Basic, una Take While cláusula se traduce en una invocación de TakeWhile.

Consulte también

Se aplica a

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

Devuelve los elementos de una secuencia en tanto que el valor de una condición especificada sea 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

Tipo de los elementos de source.

Parámetros

source
IEnumerable<TSource>

Secuencia cuyos elementos se van a devolver.

predicate
Func<TSource,Boolean>

Función para probar cada elemento de una condición.

Devoluciones

IEnumerable<TSource>

IEnumerable<T> que contiene los elementos de la secuencia de entrada que se encuentran antes del elemento que no supera la prueba.

Excepciones

source o predicate es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) para devolver elementos desde el principio de una secuencia siempre y cuando se cumpla una condición.

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

Comentarios

Este método se implementa mediante la ejecución diferida. El valor devuelto inmediato es un objeto que almacena toda la información necesaria para realizar la acción. La consulta representada por este método no se ejecuta hasta que el objeto se enumera llamando directamente a su GetEnumerator método o mediante foreach en C# o For Each en Visual Basic.

El TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) método prueba cada elemento de source mediante predicate y produce el elemento si el resultado es true. La enumeración se detiene cuando la función de predicado devuelve false para un elemento o cuando source no contiene más elementos.

Los TakeWhile métodos y SkipWhile son complementos funcionales. Dada una secuencia coll de colección y una función ppura, concatenando los resultados de coll.TakeWhile(p) y coll.SkipWhile(p) produce la misma secuencia que coll.

En la sintaxis de la expresión de consulta de Visual Basic, una Take While cláusula se traduce en una invocación de TakeWhile.

Consulte también

Se aplica a