Enumerable.TakeWhile Méthode

Définition

Retourne des éléments d'une séquence tant que la condition spécifiée a la valeur true, puis ignore les éléments restants.

Surcharges

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

Retourne des éléments d'une séquence tant que la condition spécifiée a la valeur true. L’index de l’élément est utilisé dans la logique de la fonction de prédicat.

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

Retourne des éléments d'une séquence tant que la condition spécifiée a la valeur true.

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

Retourne des éléments d'une séquence tant que la condition spécifiée a la valeur true. L’index de l’élément est utilisé dans la logique de la fonction de prédicat.

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)

Paramètres de type

TSource

Le type des éléments de source.

Paramètres

source
IEnumerable<TSource>

Séquence à partir de laquelle retourner les éléments.

predicate
Func<TSource,Int32,Boolean>

Fonction permettant de tester chaque élément source pour une condition ; le deuxième paramètre de la fonction représente l'index de l'élément source.

Retours

IEnumerable<TSource>

IEnumerable<T> qui contient les éléments de la séquence d'entrée se trouvant avant l'élément à partir duquel le test échoue.

Exceptions

source ou predicate est null.

Exemples

L’exemple de code suivant montre comment utiliser TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) pour retourner des éléments à partir du début d’une séquence tant qu’une condition qui utilise l’index de l’élément a la valeur 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

Remarques

Cette méthode est implémentée à l’aide de l’exécution différée. La valeur de retour immédiate est un objet qui stocke toutes les informations requises pour effectuer l’action. La requête représentée par cette méthode n’est pas exécutée tant que l’objet n’est pas énuméré soit en appelant sa GetEnumerator méthode directement, soit en utilisant foreach en Visual C# ou For Each dans Visual Basic.

La TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) méthode teste chaque élément de source à l’aide de predicate et génère l’élément si le résultat est true . L’énumération s’arrête lorsque la fonction false de prédicat retourne pour un élément ou lorsque source ne contient plus d’éléments.

Le premier argument de predicate représente l’élément à tester. Le deuxième argument représente l’index de base zéro de l’élément dans source .

Les TakeWhile SkipWhile méthodes et sont des compléments fonctionnels. À partir d’une séquence de collection coll et d’une fonction pure p , la concaténation des résultats de coll.TakeWhile(p) et coll.SkipWhile(p) donne la même séquence que coll .

dans Visual Basic syntaxe d’expression de requête, une Take While clause se traduit par un appel de TakeWhile .

Voir aussi

S’applique à

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

Retourne des éléments d'une séquence tant que la condition spécifiée a la valeur 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)

Paramètres de type

TSource

Le type des éléments de source.

Paramètres

source
IEnumerable<TSource>

Séquence à partir de laquelle retourner les éléments.

predicate
Func<TSource,Boolean>

Fonction permettant de tester chaque élément par rapport à une condition.

Retours

IEnumerable<TSource>

IEnumerable<T> qui contient les éléments de la séquence d'entrée se trouvant avant l'élément à partir duquel le test échoue.

Exceptions

source ou predicate est null.

Exemples

L’exemple de code suivant montre comment utiliser TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) pour retourner des éléments à partir du début d’une séquence tant qu’une condition a la valeur 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

Remarques

Cette méthode est implémentée à l’aide de l’exécution différée. La valeur de retour immédiate est un objet qui stocke toutes les informations requises pour effectuer l’action. La requête représentée par cette méthode n’est pas exécutée tant que l’objet n’est pas énuméré soit en appelant sa GetEnumerator méthode directement, soit en utilisant foreach en Visual C# ou For Each dans Visual Basic.

La TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) méthode teste chaque élément de source à l’aide de predicate et génère l’élément si le résultat est true . L’énumération s’arrête lorsque la fonction false de prédicat retourne pour un élément ou lorsque source ne contient plus d’éléments.

Les TakeWhile SkipWhile méthodes et sont des compléments fonctionnels. À partir d’une séquence de collection coll et d’une fonction pure p , la concaténation des résultats de coll.TakeWhile(p) et coll.SkipWhile(p) donne la même séquence que coll .

dans Visual Basic syntaxe d’expression de requête, une Take While clause se traduit par un appel de TakeWhile .

Voir aussi

S’applique à