Enumerable.TakeWhile Método

Definición

Devuelve elementos de una secuencia siempre que una condición especificada sea true y, a continuación, omite los elementos restantes.

Sobrecargas

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

Devuelve elementos de una secuencia siempre que se cumpla una condición especificada.

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

Devuelve elementos de una secuencia siempre que se cumpla una condición especificada. El índice del elemento se usa en la lógica de la función de predicado.

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

Devuelve elementos de una secuencia siempre que se cumpla una condición especificada.

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 de la que se van a devolver elementos.

predicate
Func<TSource,Boolean>

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

Devoluciones

IEnumerable<TSource>

que IEnumerable<T> contiene los elementos de la secuencia de entrada que se producen antes del elemento en el que ya no se 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 que 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 método /> en C# o 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 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 Visual Basic sintaxis de expresión de consulta, una cláusula Take While se traduce en una invocación de TakeWhile.

Consulte también

Se aplica a

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

Devuelve elementos de una secuencia siempre que se cumpla una condición especificada. 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 de la que se van a devolver elementos.

predicate
Func<TSource,Int32,Boolean>

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

Devoluciones

IEnumerable<TSource>

que IEnumerable<T> contiene elementos de la secuencia de entrada que se producen antes del elemento en el que la prueba ya no pasa.

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 principio de una secuencia siempre que una condición que use el índice del elemento sea 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

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 método /> en C# o 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 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 de source.

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 Visual Basic sintaxis de expresión de consulta, una cláusula Take While se traduce en una invocación de TakeWhile.

Consulte también

Se aplica a