Enumerable.Select Méthode

Définition

Projette chaque élément d’une séquence dans un nouveau formulaire.

Surcharges

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)

Projette chaque élément d'une séquence dans un nouveau formulaire en incorporant l'index de l'élément.

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)

Projette chaque élément d’une séquence dans un nouveau formulaire.

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>)

Projette chaque élément d'une séquence dans un nouveau formulaire en incorporant l'index de l'élément.

public:
generic <typename TSource, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ Select(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, int, TResult> ^ selector);
public static System.Collections.Generic.IEnumerable<TResult> Select<TSource,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,int,TResult> selector);
static member Select : seq<'Source> * Func<'Source, int, 'Result> -> seq<'Result>
<Extension()>
Public Function Select(Of TSource, TResult) (source As IEnumerable(Of TSource), selector As Func(Of TSource, Integer, TResult)) As IEnumerable(Of TResult)

Paramètres de type

TSource

Le type des éléments de source.

TResult

Type de la valeur retournée par selector.

Paramètres

source
IEnumerable<TSource>

Séquence de valeurs pour laquelle appeler une fonction de transformation.

selector
Func<TSource,Int32,TResult>

Fonction de transformation à appliquer à chaque élément source ; le deuxième paramètre de la fonction représente l'index de l'élément source.

Retours

IEnumerable<TResult>

IEnumerable<T> dont les éléments résultent d'un appel de la fonction de transformation sur chaque élément de source.

Exceptions

source ou selector est null.

Exemples

L’exemple de code suivant montre comment utiliser Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,Int32,TResult>) pour projeter sur une séquence de valeurs et utiliser l’index de chaque élément.

string[] fruits = { "apple", "banana", "mango", "orange",
                      "passionfruit", "grape" };

var query =
    fruits.Select((fruit, index) =>
                      new { index, str = fruit.Substring(0, index) });

foreach (var obj in query)
{
    Console.WriteLine("{0}", obj);
}

/*
 This code produces the following output:

 { index = 0, str =  }
 { index = 1, str = b }
 { index = 2, str = ma }
 { index = 3, str = ora }
 { index = 4, str = pass }
 { index = 5, str = grape }
*/
' Create an array of strings.
Dim fruits() As String =
{"apple", "banana", "mango", "orange", "passionfruit", "grape"}

' Project each item in the array to an anonymous type
' that stores the item's index in the array and
' a substring of each item whose length is equal
' to the index position in the original array.
Dim query =
fruits.Select(Function(fruit, index) _
                  New With {index, .Str = fruit.Substring(0, index)})

Dim output As New System.Text.StringBuilder
For Each obj In query
    output.AppendLine(obj.ToString())
Next

' Display the output.
Console.WriteLine(output.ToString())

' This code produces the following output:
'
' { index = 0, Str =  }
' { index = 1, Str = b }
' { index = 2, Str = ma }
' { index = 3, Str = ora }
' { index = 4, Str = pass }
' { index = 5, Str = grape }

Remarques

Cette méthode est implémentée à l’aide d’une exécution différée. La valeur de retour immédiat est un objet qui stocke toutes les informations nécessaires à l’exécution de 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 directement sa GetEnumerator méthode, soit en utilisant foreach en C# ou For Each en Visual Basic.

Premier argument à selector représenter l’élément à traiter. Deuxième argument pour selector représenter l’index de base zéro de cet élément dans la séquence source. Cela peut être utile si les éléments sont dans un ordre connu et que vous souhaitez faire quelque chose avec un élément à un index particulier, par exemple. Elle peut également être utile si vous souhaitez récupérer l’index d’un ou de plusieurs éléments.

Cette méthode de projection nécessite que la fonction de transformation, selector, produise une valeur pour chaque valeur de la séquence source, source. Si selector retourne une valeur qui est elle-même une collection, il appartient au consommateur de parcourir manuellement les sous-séquences. Dans une telle situation, il peut être préférable que votre requête retourne une seule séquence de valeurs coalescées. Pour ce faire, utilisez la SelectMany méthode au lieu de Select. Bien que SelectMany fonctionne de la même façon que Select, il diffère dans le fait que la fonction de transformation retourne une collection qui est ensuite développée par SelectMany avant qu’elle ne soit retournée.

S’applique à

Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>)

Projette chaque élément d’une séquence dans un nouveau formulaire.

public:
generic <typename TSource, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ Select(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TResult> ^ selector);
public static System.Collections.Generic.IEnumerable<TResult> Select<TSource,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TResult> selector);
static member Select : seq<'Source> * Func<'Source, 'Result> -> seq<'Result>
<Extension()>
Public Function Select(Of TSource, TResult) (source As IEnumerable(Of TSource), selector As Func(Of TSource, TResult)) As IEnumerable(Of TResult)

Paramètres de type

TSource

Le type des éléments de source.

TResult

Type de la valeur retournée par selector.

Paramètres

source
IEnumerable<TSource>

Séquence de valeurs pour laquelle appeler une fonction de transformation.

selector
Func<TSource,TResult>

Fonction de transformation à appliquer à chaque élément.

Retours

IEnumerable<TResult>

IEnumerable<T> dont les éléments résultent d'un appel de la fonction de transformation sur chaque élément de source.

Exceptions

source ou selector est null.

Exemples

L’exemple de code suivant montre comment utiliser Select<TSource,TResult>(IEnumerable<TSource>, Func<TSource,TResult>) pour projeter sur une séquence de valeurs.

IEnumerable<int> squares =
    Enumerable.Range(1, 10).Select(x => x * x);

foreach (int num in squares)
{
    Console.WriteLine(num);
}
/*
 This code produces the following output:

 1
 4
 9
 16
 25
 36
 49
 64
 81
 100
*/
' Create a collection of sequential integers
' from 1 to 10 and project their squares.
Dim squares As IEnumerable(Of Integer) =
Enumerable.Range(1, 10).Select(Function(x) x * x)

Dim output As New System.Text.StringBuilder
For Each num As Integer In squares
    output.AppendLine(num)
Next

' Display the output.
Console.WriteLine(output.ToString())

' This code produces the following output:
'
' 1
' 4
' 9
' 16
' 25
' 36
' 49
' 64
' 81
' 100

Remarques

Cette méthode est implémentée à l’aide d’une exécution différée. La valeur de retour immédiat est un objet qui stocke toutes les informations nécessaires à l’exécution de 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 directement sa GetEnumerator méthode, soit en utilisant foreach en C# ou For Each en Visual Basic.

Cette méthode de projection nécessite que la fonction de transformation, selector, produise une valeur pour chaque valeur de la séquence source, source. Si selector retourne une valeur qui est elle-même une collection, il appartient au consommateur de parcourir manuellement les sous-séquences. Dans une telle situation, il peut être préférable que votre requête retourne une seule séquence de valeurs coalescées. Pour ce faire, utilisez la SelectMany méthode au lieu de Select. Bien que SelectMany fonctionne de la même façon que Select, il diffère dans le fait que la fonction de transformation retourne une collection qui est ensuite développée par SelectMany avant qu’elle ne soit retournée.

Dans la syntaxe de l’expression de requête, une select clause (C#) ou Select (Visual Basic) se traduit par un appel de Select.

Voir aussi

S’applique à