Enumerable.GroupBy Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Regroupe les éléments d’une séquence.
Surcharges
| Nom | Description |
|---|---|
| GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) |
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée et crée une valeur de résultat à partir de chaque groupe et de sa clé. Les éléments de chaque groupe sont projetés à l’aide d’une fonction spécifiée. |
| GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>) |
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée et crée une valeur de résultat à partir de chaque groupe et de sa clé. Les valeurs de clé sont comparées à l’aide d’un comparateur spécifié et les éléments de chaque groupe sont projetés à l’aide d’une fonction spécifiée. |
| GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) |
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée et projette les éléments pour chaque groupe à l’aide d’une fonction spécifiée. |
| GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) |
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé. Les clés sont comparées à l’aide d’un comparateur et les éléments de chaque groupe sont projetés à l’aide d’une fonction spécifiée. |
| GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) |
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée et crée une valeur de résultat à partir de chaque groupe et de sa clé. |
| GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>) |
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée et crée une valeur de résultat à partir de chaque groupe et de sa clé. Les clés sont comparées à l’aide d’un comparateur spécifié. |
| GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) |
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée. |
| GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) |
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée et compare les clés à l’aide d’un comparateur spécifié. |
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée et crée une valeur de résultat à partir de chaque groupe et de sa clé. Les éléments de chaque groupe sont projetés à l’aide d’une fonction spécifiée.
public:
generic <typename TSource, typename TKey, typename TElement, typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TResult> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector, Func<TKey, System::Collections::Generic::IEnumerable<TElement> ^, TResult> ^ resultSelector);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> * Func<'Key, seq<'Element>, 'Result> -> seq<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement, TResult) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement), resultSelector As Func(Of TKey, IEnumerable(Of TElement), TResult)) As IEnumerable(Of TResult)
Paramètres de type
- TSource
Type des éléments de source.
- TKey
Type de la clé retournée par keySelector.
- TElement
Type des éléments dans chaque IGrouping<TKey,TElement>.
- TResult
Type de la valeur de résultat retournée par resultSelector.
Paramètres
- source
- IEnumerable<TSource>
Dont IEnumerable<T> les éléments à regrouper.
- keySelector
- Func<TSource,TKey>
Fonction permettant d’extraire la clé de chaque élément.
- elementSelector
- Func<TSource,TElement>
Fonction permettant de mapper chaque élément source à un élément d’un IGrouping<TKey,TElement>.
- resultSelector
- Func<TKey,IEnumerable<TElement>,TResult>
Fonction permettant de créer une valeur de résultat à partir de chaque groupe.
Retours
Collection d’éléments de type TResult où chaque élément représente une projection sur un groupe et sa clé.
Exceptions
source ou keySelector ou elementSelectorresultSelector est null.
Exemples
L’exemple de code suivant montre comment regrouper GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) les éléments projetés d’une séquence, puis projeter une séquence de résultats de type TResult.
class Pet
{
public string Name { get; set; }
public double Age { get; set; }
}
public static void GroupByEx4()
{
// Create a list of pets.
List<Pet> petsList =
new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
new Pet { Name="Boots", Age=4.9 },
new Pet { Name="Whiskers", Age=1.5 },
new Pet { Name="Daisy", Age=4.3 } };
// Group Pet.Age values by the Math.Floor of the age.
// Then project an anonymous type from each group
// that consists of the key, the count of the group's
// elements, and the minimum and maximum age in the group.
var query = petsList.GroupBy(
pet => Math.Floor(pet.Age),
pet => pet.Age,
(baseAge, ages) => new
{
Key = baseAge,
Count = ages.Count(),
Min = ages.Min(),
Max = ages.Max()
});
// Iterate over each anonymous type.
foreach (var result in query)
{
Console.WriteLine("\nAge group: " + result.Key);
Console.WriteLine("Number of pets in this age group: " + result.Count);
Console.WriteLine("Minimum age: " + result.Min);
Console.WriteLine("Maximum age: " + result.Max);
}
/* This code produces the following output:
Age group: 8
Number of pets in this age group: 1
Minimum age: 8.3
Maximum age: 8.3
Age group: 4
Number of pets in this age group: 2
Minimum age: 4.3
Maximum age: 4.9
Age group: 1
Number of pets in this age group: 1
Minimum age: 1.5
Maximum age: 1.5
*/
}
Structure Pet
Public Name As String
Public Age As Double
End Structure
Public Sub GroupByEx4()
' Create a list of pets.
Dim petsList As New List(Of Pet)(New Pet() _
{New Pet With {.Name = "Barley", .Age = 8.3},
New Pet With {.Name = "Boots", .Age = 4.9},
New Pet With {.Name = "Whiskers", .Age = 1.5},
New Pet With {.Name = "Daisy", .Age = 4.3}})
' Group Pet.Age values by the Math.Floor of the age.
' Then project an anonymous type from each group
' that consists of the key, the count of the group's
' elements, and the minimum and maximum age in the group.
Dim query = petsList.GroupBy(
Function(pet) Math.Floor(pet.Age),
Function(pet) pet.Age,
Function(baseAge, ages) New With
{.Key = baseAge,
.Count = ages.Count(),
.Min = ages.Min(),
.Max = ages.Max()}
)
Dim output As New System.Text.StringBuilder
' Iterate over each anonymous type.
For Each result In query
output.AppendLine(vbCrLf & "Age group: " & result.Key)
output.AppendLine("Number of pets in this age group: " & result.Count)
output.AppendLine("Minimum age: " & result.Min)
output.AppendLine("Maximum age: " & result.Max)
Next
' Display the output.
Console.WriteLine(output.ToString)
End Sub
' This code produces the following output:
' Age group: 8
' Number of pets in this age group: 1
' Minimum age: 8.3
' Maximum age: 8.3
'
' Age group: 4
' Number of pets in this age group: 2
' Minimum age: 4.3
' Maximum age: 4.9
'
' Age group: 1
' Number of pets in this age group: 1
' Minimum age: 1.5
' Maximum age: 1.5
Remarques
Dans la syntaxe d’expression de requête, une clause group by (C#) ou Group By Into (Visual Basic) se traduit par un appel de GroupBy.
Voir aussi
S’applique à
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>)
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée et crée une valeur de résultat à partir de chaque groupe et de sa clé. Les valeurs de clé sont comparées à l’aide d’un comparateur spécifié et les éléments de chaque groupe sont projetés à l’aide d’une fonction spécifiée.
public:
generic <typename TSource, typename TKey, typename TElement, typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TResult> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector, Func<TKey, System::Collections::Generic::IEnumerable<TElement> ^, TResult> ^ resultSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> * Func<'Key, seq<'Element>, 'Result> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement, TResult) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement), resultSelector As Func(Of TKey, IEnumerable(Of TElement), TResult), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of TResult)
Paramètres de type
- TSource
Type des éléments de source.
- TKey
Type de la clé retournée par keySelector.
- TElement
Type des éléments dans chaque IGrouping<TKey,TElement>.
- TResult
Type de la valeur de résultat retournée par resultSelector.
Paramètres
- source
- IEnumerable<TSource>
Dont IEnumerable<T> les éléments à regrouper.
- keySelector
- Func<TSource,TKey>
Fonction permettant d’extraire la clé de chaque élément.
- elementSelector
- Func<TSource,TElement>
Fonction permettant de mapper chaque élément source à un élément d’un IGrouping<TKey,TElement>.
- resultSelector
- Func<TKey,IEnumerable<TElement>,TResult>
Fonction permettant de créer une valeur de résultat à partir de chaque groupe.
- comparer
- IEqualityComparer<TKey>
À IEqualityComparer<T> comparer aux clés.
Retours
Collection d’éléments de type TResult où chaque élément représente une projection sur un groupe et sa clé.
Exceptions
source ou keySelector ou elementSelectorresultSelector est null.
Voir aussi
S’applique à
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée et projette les éléments pour chaque groupe à l’aide d’une fonction spécifiée.
public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TElement> ^> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> -> seq<System.Linq.IGrouping<'Key, 'Element>>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement)) As IEnumerable(Of IGrouping(Of TKey, TElement))
Paramètres de type
- TSource
Type des éléments de source.
- TKey
Type de la clé retournée par keySelector.
- TElement
Type des éléments dans le IGrouping<TKey,TElement>.
Paramètres
- source
- IEnumerable<TSource>
Dont IEnumerable<T> les éléments à regrouper.
- keySelector
- Func<TSource,TKey>
Fonction permettant d’extraire la clé de chaque élément.
- elementSelector
- Func<TSource,TElement>
Fonction permettant de mapper chaque élément source à un élément dans le IGrouping<TKey,TElement>.
Retours
Un IEnumerable<IGrouping<TKey, TElement>> en C# ou IEnumerable(Of IGrouping(Of TKey, TElement)) dans Visual Basic où chaque objet IGrouping<TKey,TElement> contient une collection d’objets de type TElement et d’une clé.
Exceptions
source
keySelector ou elementSelector est null.
Exemples
L’exemple de code suivant montre comment regrouper GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) les éléments d’une séquence.
class Pet
{
public string Name { get; set; }
public int Age { get; set; }
}
// Uses method-based query syntax.
public static void GroupByEx1()
{
// Create a list of pets.
List<Pet> pets =
new List<Pet>{ new Pet { Name="Barley", Age=8 },
new Pet { Name="Boots", Age=4 },
new Pet { Name="Whiskers", Age=1 },
new Pet { Name="Daisy", Age=4 } };
// Group the pets using Age as the key value
// and selecting only the pet's Name for each value.
IEnumerable<IGrouping<int, string>> query =
pets.GroupBy(pet => pet.Age, pet => pet.Name);
// Iterate over each IGrouping in the collection.
foreach (IGrouping<int, string> petGroup in query)
{
// Print the key value of the IGrouping.
Console.WriteLine(petGroup.Key);
// Iterate over each value in the
// IGrouping and print the value.
foreach (string name in petGroup)
Console.WriteLine(" {0}", name);
}
}
/*
This code produces the following output:
8
Barley
4
Boots
Daisy
1
Whiskers
*/
Structure Pet
Public Name As String
Public Age As Integer
End Structure
Sub GroupByEx1()
'Create a list of Pet objects.
Dim pets As New List(Of Pet)(New Pet() _
{New Pet With {.Name = "Barley", .Age = 8},
New Pet With {.Name = "Boots", .Age = 4},
New Pet With {.Name = "Whiskers", .Age = 1},
New Pet With {.Name = "Daisy", .Age = 4}})
' Group the pets using Age as the key
' and selecting only the pet's Name for each value.
Dim query As IEnumerable(Of IGrouping(Of Integer, String)) =
pets.GroupBy(Function(pet) pet.Age,
Function(pet) pet.Name)
Dim output As New System.Text.StringBuilder
' Iterate over each IGrouping in the collection.
For Each petGroup As IGrouping(Of Integer, String) In query
' Print the key value of the IGrouping.
output.AppendLine(petGroup.Key)
' Iterate over each value in the IGrouping and print the value.
For Each name As String In petGroup
output.AppendLine(" " & name)
Next
Next
' Display the output.
Console.WriteLine(output.ToString)
End Sub
' This code produces the following output:
'
' 8
' Barley
' 4
' Boots
' Daisy
' 1
' Whiskers
Dans la syntaxe d’expression de requête, une clause group by (C#) ou Group By Into (Visual Basic) se traduit par un appel de GroupBy. La traduction de l’expression de requête dans l’exemple suivant équivaut à la requête dans l’exemple ci-dessus.
IEnumerable<IGrouping<int, string>> query =
from pet in pets
group pet.Name by pet.Age;
Dim query =
From pet In pets
Group pet.Name By Age = pet.Age Into ageGroup = Group
Note
Dans une expression de requête C# ou Visual Basic, les expressions de sélection d’élément et de clé se produisent dans l’ordre inverse de leurs positions d’argument dans un appel à la méthode GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>).
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é en appelant directement sa méthode GetEnumerator ou en utilisant foreach en C# ou For Each dans Visual Basic.
La GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) méthode retourne une collection d’objets IGrouping<TKey,TElement> , une pour chaque clé distincte qui a été rencontrée. Il IGrouping<TKey,TElement> s’agit d’une IEnumerable<T> clé associée à ses éléments.
Les IGrouping<TKey,TElement> objets sont générés dans un ordre basé sur l’ordre des éléments dans source lequel a produit la première clé de chaque IGrouping<TKey,TElement>. Les éléments d’un regroupement sont générés dans l’ordre dans lequel les éléments générés apparaissent.source
Le comparateur Default d’égalité par défaut est utilisé pour comparer les clés.
Voir aussi
S’applique à
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé. Les clés sont comparées à l’aide d’un comparateur et les éléments de chaque groupe sont projetés à l’aide d’une fonction spécifiée.
public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TElement> ^> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<System.Linq.IGrouping<'Key, 'Element>>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of IGrouping(Of TKey, TElement))
Paramètres de type
- TSource
Type des éléments de source.
- TKey
Type de la clé retournée par keySelector.
- TElement
Type des éléments dans le IGrouping<TKey,TElement>.
Paramètres
- source
- IEnumerable<TSource>
Dont IEnumerable<T> les éléments à regrouper.
- keySelector
- Func<TSource,TKey>
Fonction permettant d’extraire la clé de chaque élément.
- elementSelector
- Func<TSource,TElement>
Fonction permettant de mapper chaque élément source à un élément d’un IGrouping<TKey,TElement>.
- comparer
- IEqualityComparer<TKey>
Pour IEqualityComparer<T> comparer les clés.
Retours
Un IEnumerable<IGrouping<TKey, TElement>> en C# ou IEnumerable(Of IGrouping(Of TKey, TElement)) dans Visual Basic où chaque objet IGrouping<TKey,TElement> contient une collection d’objets de type TElement et d’une clé.
Exceptions
source
keySelector ou elementSelector est null.
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é en appelant directement sa méthode GetEnumerator ou en utilisant foreach en C# ou For Each dans Visual Basic.
Note
Pour obtenir des exemples, GroupByconsultez les articles suivants :
- GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)
- GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)
- GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)
La GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) méthode retourne une collection d’objets IGrouping<TKey,TElement> , une pour chaque clé distincte qui a été rencontrée. Il IGrouping<TKey,TElement> s’agit d’une IEnumerable<T> clé associée à ses éléments.
Les IGrouping<TKey,TElement> objets sont générés dans un ordre basé sur l’ordre des éléments dans source lequel a produit la première clé de chaque IGrouping<TKey,TElement>. Les éléments d’un regroupement sont générés dans l’ordre dans lequel les éléments générés apparaissent.source
Si comparer c’est nullle cas, le comparateur Default d’égalité par défaut est utilisé pour comparer les clés.
Si deux clés sont considérées comme égales, comparerla première clé est choisie comme clé pour ce regroupement.
Dans la syntaxe d’expression de requête, une clause group by (C#) ou Group By Into (Visual Basic) se traduit par un appel de GroupBy. Pour plus d’informations et d’exemples d’utilisation, consultez la clause group et la clause Group By.
Voir aussi
S’applique à
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée et crée une valeur de résultat à partir de chaque groupe et de sa clé.
public:
generic <typename TSource, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TResult> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TKey, System::Collections::Generic::IEnumerable<TSource> ^, TResult> ^ resultSelector);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Key, seq<'Source>, 'Result> -> seq<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TResult) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), resultSelector As Func(Of TKey, IEnumerable(Of TSource), TResult)) As IEnumerable(Of TResult)
Paramètres de type
- TSource
Type des éléments de source.
- TKey
Type de la clé retournée par keySelector.
- TResult
Type de la valeur de résultat retournée par resultSelector.
Paramètres
- source
- IEnumerable<TSource>
Dont IEnumerable<T> les éléments à regrouper.
- keySelector
- Func<TSource,TKey>
Fonction permettant d’extraire la clé de chaque élément.
- resultSelector
- Func<TKey,IEnumerable<TSource>,TResult>
Fonction permettant de créer une valeur de résultat à partir de chaque groupe.
Retours
Collection d’éléments de type TResult où chaque élément représente une projection sur un groupe et sa clé.
Exceptions
source
keySelector ou resultSelector est null.
Exemples
L’exemple de code suivant montre comment regrouper GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) les éléments d’une séquence et projeter une séquence de résultats de type TResult.
class Pet
{
public string Name { get; set; }
public double Age { get; set; }
}
public static void GroupByEx3()
{
// Create a list of pets.
List<Pet> petsList =
new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
new Pet { Name="Boots", Age=4.9 },
new Pet { Name="Whiskers", Age=1.5 },
new Pet { Name="Daisy", Age=4.3 } };
// Group Pet objects by the Math.Floor of their age.
// Then project an anonymous type from each group
// that consists of the key, the count of the group's
// elements, and the minimum and maximum age in the group.
var query = petsList.GroupBy(
pet => Math.Floor(pet.Age),
(age, pets) => new
{
Key = age,
Count = pets.Count(),
Min = pets.Min(pet => pet.Age),
Max = pets.Max(pet => pet.Age)
});
// Iterate over each anonymous type.
foreach (var result in query)
{
Console.WriteLine("\nAge group: " + result.Key);
Console.WriteLine("Number of pets in this age group: " + result.Count);
Console.WriteLine("Minimum age: " + result.Min);
Console.WriteLine("Maximum age: " + result.Max);
}
/* This code produces the following output:
Age group: 8
Number of pets in this age group: 1
Minimum age: 8.3
Maximum age: 8.3
Age group: 4
Number of pets in this age group: 2
Minimum age: 4.3
Maximum age: 4.9
Age group: 1
Number of pets in this age group: 1
Minimum age: 1.5
Maximum age: 1.5
*/
}
Structure Pet
Public Name As String
Public Age As Double
End Structure
Public Sub GroupByEx3()
' Create a list of pets.
Dim petsList As New List(Of Pet)(New Pet() _
{New Pet With {.Name = "Barley", .Age = 8.3},
New Pet With {.Name = "Boots", .Age = 4.9},
New Pet With {.Name = "Whiskers", .Age = 1.5},
New Pet With {.Name = "Daisy", .Age = 4.3}})
' Group Pet objects by the Math.Floor of their age.
' Then project an anonymous type from each group
' that consists of the key, the count of the group's
' elements, and the minimum and maximum age in the group.
Dim query = petsList.GroupBy(
Function(pet) Math.Floor(pet.Age),
Function(age, pets) New With
{.Key = age,
.Count = pets.Count(),
.Min = pets.Min(Function(pet) pet.Age),
.Max = pets.Max(Function(Pet) Pet.Age)}
)
Dim output As New System.Text.StringBuilder
' Iterate over each anonymous type.
For Each result In query
output.AppendLine(vbCrLf & "Age group: " & result.Key)
output.AppendLine("Number of pets in this age group: " & result.Count)
output.AppendLine("Minimum age: " & result.Min)
output.AppendLine("Maximum age: " & result.Max)
Next
' Display the output.
Console.WriteLine(output.ToString)
End Sub
' This code produces the following output:
' Age group: 8
' Number of pets in this age group: 1
' Minimum age: 8.3
' Maximum age: 8.3
'
' Age group: 4
' Number of pets in this age group: 2
' Minimum age: 4.3
' Maximum age: 4.9
'
' Age group: 1
' Number of pets in this age group: 1
' Minimum age: 1.5
' Maximum age: 1.5
Remarques
Dans la syntaxe d’expression de requête, une clause group by (C#) ou Group By Into (Visual Basic) se traduit par un appel de GroupBy.
Voir aussi
S’applique à
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée et crée une valeur de résultat à partir de chaque groupe et de sa clé. Les clés sont comparées à l’aide d’un comparateur spécifié.
public:
generic <typename TSource, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TResult> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TKey, System::Collections::Generic::IEnumerable<TSource> ^, TResult> ^ resultSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Key, seq<'Source>, 'Result> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TResult) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), resultSelector As Func(Of TKey, IEnumerable(Of TSource), TResult), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of TResult)
Paramètres de type
- TSource
Type des éléments de source.
- TKey
Type de la clé retournée par keySelector.
- TResult
Type de la valeur de résultat retournée par resultSelector.
Paramètres
- source
- IEnumerable<TSource>
Dont IEnumerable<T> les éléments à regrouper.
- keySelector
- Func<TSource,TKey>
Fonction permettant d’extraire la clé de chaque élément.
- resultSelector
- Func<TKey,IEnumerable<TSource>,TResult>
Fonction permettant de créer une valeur de résultat à partir de chaque groupe.
- comparer
- IEqualityComparer<TKey>
À IEqualityComparer<T> comparer aux clés.
Retours
Collection d’éléments de type TResult où chaque élément représente une projection sur un groupe et sa clé.
Exceptions
source
keySelector ou resultSelector est null.
Voir aussi
S’applique à
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TSource> ^> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> -> seq<System.Linq.IGrouping<'Key, 'Source>>
<Extension()>
Public Function GroupBy(Of TSource, TKey) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey)) As IEnumerable(Of IGrouping(Of TKey, TSource))
Paramètres de type
- TSource
Type des éléments de source.
- TKey
Type de la clé retournée par keySelector.
Paramètres
- source
- IEnumerable<TSource>
Dont IEnumerable<T> les éléments à regrouper.
- keySelector
- Func<TSource,TKey>
Fonction permettant d’extraire la clé de chaque élément.
Retours
En IEnumerable<IGrouping<TKey, TSource>> C# ou IEnumerable(Of IGrouping(Of TKey, TSource)) en Visual Basic où chaque IGrouping<TKey,TElement> objet contient une séquence d’objets et une clé.
Exceptions
source ou keySelector est null.
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é en appelant directement sa méthode GetEnumerator ou en utilisant foreach en C# ou For Each dans Visual Basic.
Note
Pour obtenir des exemples, GroupByconsultez les articles suivants :
- GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)
- GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)
- GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)
La GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) méthode retourne une collection d’objets IGrouping<TKey,TElement> , une pour chaque clé distincte qui a été rencontrée. Il IGrouping<TKey,TElement> s’agit d’une IEnumerable<T> clé associée à ses éléments.
Les IGrouping<TKey,TElement> objets sont générés dans un ordre basé sur l’ordre des éléments dans source lequel a produit la première clé de chaque IGrouping<TKey,TElement>. Les éléments d’un regroupement sont générés dans l’ordre dans sourcelequel ils apparaissent.
Le comparateur Default d’égalité par défaut est utilisé pour comparer les clés.
Dans la syntaxe d’expression de requête, une clause group by (C#) ou Group By Into (Visual Basic) se traduit par un appel de GroupBy. Pour plus d’informations et d’exemples d’utilisation, consultez la clause group et la clause Group By.
Voir aussi
S’applique à
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)
Regroupe les éléments d’une séquence en fonction d’une fonction de sélecteur de clé spécifiée et compare les clés à l’aide d’un comparateur spécifié.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TSource> ^> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<System.Linq.IGrouping<'Key, 'Source>>
<Extension()>
Public Function GroupBy(Of TSource, TKey) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of IGrouping(Of TKey, TSource))
Paramètres de type
- TSource
Type des éléments de source.
- TKey
Type de la clé retournée par keySelector.
Paramètres
- source
- IEnumerable<TSource>
Dont IEnumerable<T> les éléments à regrouper.
- keySelector
- Func<TSource,TKey>
Fonction permettant d’extraire la clé de chaque élément.
- comparer
- IEqualityComparer<TKey>
Pour IEqualityComparer<T> comparer les clés.
Retours
Un IEnumerable<IGrouping<TKey, TSource>> en C# ou IEnumerable(Of IGrouping(Of TKey, TSource)) dans Visual Basic où chaque objet IGrouping<TKey,TElement> contient une collection d’objets et une clé.
Exceptions
source ou keySelector est null.
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é en appelant directement sa méthode GetEnumerator ou en utilisant foreach en C# ou For Each dans Visual Basic.
Note
Pour obtenir des exemples, GroupByconsultez les articles suivants :
- GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)
- GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)
- GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)
La GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) méthode retourne une collection d’objets IGrouping<TKey,TElement> , une pour chaque clé distincte qui a été rencontrée. Il IGrouping<TKey,TElement> s’agit d’une IEnumerable<T> clé associée à ses éléments.
Les IGrouping<TKey,TElement> objets sont générés dans un ordre basé sur l’ordre des éléments dans source lequel a produit la première clé de chaque IGrouping<TKey,TElement>. Les éléments d’un regroupement sont générés dans l’ordre dans sourcelequel ils apparaissent.
Si comparer c’est nullle cas, le comparateur Default d’égalité par défaut est utilisé pour comparer les clés.
Si deux clés sont considérées comme égales, comparerla première clé est choisie comme clé pour ce regroupement.
Dans la syntaxe d’expression de requête, une clause group by (C#) ou Group By Into (Visual Basic) se traduit par un appel de GroupBy. Pour plus d’informations et d’exemples d’utilisation, consultez la clause group et la clause Group By.