Enumerable.GroupBy Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee worden de elementen van een reeks gegroepeerd.
Overloads
| Name | Description |
|---|---|
| GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) |
Groepeer de elementen van een reeks op basis van een opgegeven sleutelkiezerfunctie en maakt een resultaatwaarde van elke groep en de bijbehorende sleutel. De elementen van elke groep worden geprojecteerd met behulp van een opgegeven functie. |
| GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>) |
Groepeer de elementen van een reeks op basis van een opgegeven sleutelkiezerfunctie en maakt een resultaatwaarde van elke groep en de bijbehorende sleutel. Sleutelwaarden worden vergeleken met behulp van een opgegeven vergelijkingsfunctie en de elementen van elke groep worden geprojecteerd met behulp van een opgegeven functie. |
| GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) |
Groepeert de elementen van een reeks op basis van een opgegeven sleutelkiezerfunctie en projecteert de elementen voor elke groep met behulp van een opgegeven functie. |
| GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) |
Hiermee worden de elementen van een reeks gegroepeerd op basis van een sleutelkiezerfunctie. De sleutels worden vergeleken met behulp van een vergelijkingsfunctie en de elementen van elke groep worden geprojecteerd met behulp van een opgegeven functie. |
| GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) |
Groepeer de elementen van een reeks op basis van een opgegeven sleutelkiezerfunctie en maakt een resultaatwaarde van elke groep en de bijbehorende sleutel. |
| GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>) |
Groepeer de elementen van een reeks op basis van een opgegeven sleutelkiezerfunctie en maakt een resultaatwaarde van elke groep en de bijbehorende sleutel. De sleutels worden vergeleken met behulp van een opgegeven vergelijkingsfunctie. |
| GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) |
Hiermee worden de elementen van een reeks gegroepeerd op basis van een opgegeven sleutelkiezerfunctie. |
| GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) |
Groepeert de elementen van een reeks op basis van een opgegeven sleutelkiezerfunctie en vergelijkt de sleutels met behulp van een opgegeven vergelijkingsfunctie. |
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)
Groepeer de elementen van een reeks op basis van een opgegeven sleutelkiezerfunctie en maakt een resultaatwaarde van elke groep en de bijbehorende sleutel. De elementen van elke groep worden geprojecteerd met behulp van een opgegeven functie.
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)
Type parameters
- TSource
Het type van de elementen van source.
- TKey
Het type sleutel dat wordt geretourneerd door keySelector.
- TElement
Het type van de elementen in elke IGrouping<TKey,TElement>.
- TResult
Het type van de resultaatwaarde die wordt geretourneerd door resultSelector.
Parameters
- source
- IEnumerable<TSource>
Een IEnumerable<T> van de elementen die moeten worden gegroepeerd.
- keySelector
- Func<TSource,TKey>
Een functie om de sleutel voor elk element te extraheren.
- elementSelector
- Func<TSource,TElement>
Een functie om elk bronelement toe te wijzen aan een element in een IGrouping<TKey,TElement>.
- resultSelector
- Func<TKey,IEnumerable<TElement>,TResult>
Een functie voor het maken van een resultaatwaarde van elke groep.
Retouren
Een verzameling elementen van het type TResult waarbij elk element een projectie vertegenwoordigt voor een groep en de bijbehorende sleutel.
Uitzonderingen
source
elementSelector of keySelector of resultSelector is null.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) u de projectelementen van een reeks groepeert en vervolgens een reeks resultaten van het type TResultprojecteert.
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
Opmerkingen
In de syntaxis van de query-expressie wordt een component group by (C#) of Group By Into (Visual Basic) omgezet in een aanroep van GroupBy.
Zie ook
Van toepassing op
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>)
Groepeer de elementen van een reeks op basis van een opgegeven sleutelkiezerfunctie en maakt een resultaatwaarde van elke groep en de bijbehorende sleutel. Sleutelwaarden worden vergeleken met behulp van een opgegeven vergelijkingsfunctie en de elementen van elke groep worden geprojecteerd met behulp van een opgegeven functie.
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)
Type parameters
- TSource
Het type van de elementen van source.
- TKey
Het type sleutel dat wordt geretourneerd door keySelector.
- TElement
Het type van de elementen in elke IGrouping<TKey,TElement>.
- TResult
Het type van de resultaatwaarde die wordt geretourneerd door resultSelector.
Parameters
- source
- IEnumerable<TSource>
Een IEnumerable<T> van de elementen die moeten worden gegroepeerd.
- keySelector
- Func<TSource,TKey>
Een functie om de sleutel voor elk element te extraheren.
- elementSelector
- Func<TSource,TElement>
Een functie om elk bronelement toe te wijzen aan een element in een IGrouping<TKey,TElement>.
- resultSelector
- Func<TKey,IEnumerable<TElement>,TResult>
Een functie voor het maken van een resultaatwaarde van elke groep.
- comparer
- IEqualityComparer<TKey>
Een IEqualityComparer<T> om sleutels te vergelijken met.
Retouren
Een verzameling elementen van het type TResult waarbij elk element een projectie vertegenwoordigt voor een groep en de bijbehorende sleutel.
Uitzonderingen
source
elementSelector of keySelector of resultSelector is null.
Zie ook
Van toepassing op
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)
Groepeert de elementen van een reeks op basis van een opgegeven sleutelkiezerfunctie en projecteert de elementen voor elke groep met behulp van een opgegeven functie.
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))
Type parameters
- TSource
Het type van de elementen van source.
- TKey
Het type sleutel dat wordt geretourneerd door keySelector.
- TElement
Het type van de elementen in de IGrouping<TKey,TElement>.
Parameters
- source
- IEnumerable<TSource>
Een IEnumerable<T> van de elementen die moeten worden gegroepeerd.
- keySelector
- Func<TSource,TKey>
Een functie om de sleutel voor elk element te extraheren.
- elementSelector
- Func<TSource,TElement>
Een functie om elk bronelement toe te wijzen aan een element in de IGrouping<TKey,TElement>.
Retouren
Een IEnumerable<IGrouping<TKey, TElement>> in C# of IEnumerable(Of IGrouping(Of TKey, TElement)) in Visual Basic waarbij elk IGrouping<TKey,TElement>-object een verzameling objecten van het type TElement en een sleutel bevat.
Uitzonderingen
source
elementSelector of keySelector is null.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u de elementen van een reeks kunt groeperen GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) .
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
In de syntaxis van de query-expressie wordt een component group by (C#) of Group By Into (Visual Basic) omgezet in een aanroep van GroupBy. De vertaling van de query-expressie in het volgende voorbeeld is gelijk aan de query in het bovenstaande voorbeeld.
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
In een C# of Visual Basic query-expressie vinden de element- en sleutelselectieexpressies plaats in de omgekeerde volgorde van hun argumentposities in een aanroep naar de methode GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>).
Opmerkingen
Deze methode wordt geïmplementeerd met behulp van de uitgestelde uitvoering. De onmiddellijke retourwaarde is een object waarin alle informatie wordt opgeslagen die nodig is om de actie uit te voeren. De query die door deze methode wordt vertegenwoordigd, wordt pas uitgevoerd nadat het object is geïnventariseerd door de methode GetEnumerator rechtstreeks aan te roepen of door foreach te gebruiken in C# of For Each in Visual Basic.
De GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) methode retourneert een verzameling IGrouping<TKey,TElement> objecten, één voor elke afzonderlijke sleutel die is aangetroffen. Een IGrouping<TKey,TElement> is een IEnumerable<T> die ook een sleutel heeft die is gekoppeld aan de bijbehorende elementen.
De IGrouping<TKey,TElement> objecten worden gegenereerd in een volgorde op basis van de volgorde van de elementen in source die de eerste sleutel van elk IGrouping<TKey,TElement>element hebben geproduceerd. Elementen in een groepering worden gegenereerd in de volgorde waarin de elementen waarin ze zijn geproduceerd, worden weergegeven in source.
De standaard gelijkheidsgelijker Default wordt gebruikt om sleutels te vergelijken.
Zie ook
Van toepassing op
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)
Hiermee worden de elementen van een reeks gegroepeerd op basis van een sleutelkiezerfunctie. De sleutels worden vergeleken met behulp van een vergelijkingsfunctie en de elementen van elke groep worden geprojecteerd met behulp van een opgegeven functie.
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))
Type parameters
- TSource
Het type van de elementen van source.
- TKey
Het type sleutel dat wordt geretourneerd door keySelector.
- TElement
Het type van de elementen in de IGrouping<TKey,TElement>.
Parameters
- source
- IEnumerable<TSource>
Een IEnumerable<T> van de elementen die moeten worden gegroepeerd.
- keySelector
- Func<TSource,TKey>
Een functie om de sleutel voor elk element te extraheren.
- elementSelector
- Func<TSource,TElement>
Een functie om elk bronelement toe te wijzen aan een element in een IGrouping<TKey,TElement>.
- comparer
- IEqualityComparer<TKey>
Een IEqualityComparer<T> om sleutels te vergelijken.
Retouren
Een IEnumerable<IGrouping<TKey, TElement>> in C# of IEnumerable(Of IGrouping(Of TKey, TElement)) in Visual Basic waarbij elk IGrouping<TKey,TElement>-object een verzameling objecten van het type TElement en een sleutel bevat.
Uitzonderingen
source
elementSelector of keySelector is null.
Opmerkingen
Deze methode wordt geïmplementeerd met behulp van de uitgestelde uitvoering. De onmiddellijke retourwaarde is een object waarin alle informatie wordt opgeslagen die nodig is om de actie uit te voeren. De query die door deze methode wordt vertegenwoordigd, wordt pas uitgevoerd nadat het object is geïnventariseerd door de methode GetEnumerator rechtstreeks aan te roepen of door foreach te gebruiken in C# of For Each in Visual Basic.
Note
Zie de volgende artikelen voor voorbeelden van GroupBy:
- 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>)
De GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) methode retourneert een verzameling IGrouping<TKey,TElement> objecten, één voor elke afzonderlijke sleutel die is aangetroffen. Een IGrouping<TKey,TElement> is een IEnumerable<T> die ook een sleutel heeft die is gekoppeld aan de bijbehorende elementen.
De IGrouping<TKey,TElement> objecten worden gegenereerd in een volgorde op basis van de volgorde van de elementen in source die de eerste sleutel van elk IGrouping<TKey,TElement>element hebben geproduceerd. Elementen in een groepering worden gegenereerd in de volgorde waarin de elementen waarin ze zijn geproduceerd, worden weergegeven in source.
Als comparer dat het is null, wordt de standaard gelijkheidsgelijker Default gebruikt om sleutels te vergelijken.
Als twee sleutels worden beschouwd als gelijk aan comparer, wordt de eerste sleutel gekozen als de sleutel voor die groepering.
In de syntaxis van de query-expressie wordt een component group by (C#) of Group By Into (Visual Basic) omgezet in een aanroep van GroupBy. Zie groepsclausule en Group By-component voor meer informatie en gebruiksvoorbeelden.
Zie ook
Van toepassing op
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)
Groepeer de elementen van een reeks op basis van een opgegeven sleutelkiezerfunctie en maakt een resultaatwaarde van elke groep en de bijbehorende sleutel.
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)
Type parameters
- TSource
Het type van de elementen van source.
- TKey
Het type sleutel dat wordt geretourneerd door keySelector.
- TResult
Het type van de resultaatwaarde die wordt geretourneerd door resultSelector.
Parameters
- source
- IEnumerable<TSource>
Een IEnumerable<T> van de elementen die moeten worden gegroepeerd.
- keySelector
- Func<TSource,TKey>
Een functie om de sleutel voor elk element te extraheren.
- resultSelector
- Func<TKey,IEnumerable<TSource>,TResult>
Een functie voor het maken van een resultaatwaarde van elke groep.
Retouren
Een verzameling elementen van het type TResult waarbij elk element een projectie vertegenwoordigt voor een groep en de bijbehorende sleutel.
Uitzonderingen
source
resultSelector of keySelector is null.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) u de elementen van een reeks groepeert en een reeks resultaten van het type TResultprojecteert.
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
Opmerkingen
In de syntaxis van de query-expressie wordt een component group by (C#) of Group By Into (Visual Basic) omgezet in een aanroep van GroupBy.
Zie ook
Van toepassing op
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)
Groepeer de elementen van een reeks op basis van een opgegeven sleutelkiezerfunctie en maakt een resultaatwaarde van elke groep en de bijbehorende sleutel. De sleutels worden vergeleken met behulp van een opgegeven vergelijkingsfunctie.
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)
Type parameters
- TSource
Het type van de elementen van source.
- TKey
Het type sleutel dat wordt geretourneerd door keySelector.
- TResult
Het type van de resultaatwaarde die wordt geretourneerd door resultSelector.
Parameters
- source
- IEnumerable<TSource>
Een IEnumerable<T> van de elementen die moeten worden gegroepeerd.
- keySelector
- Func<TSource,TKey>
Een functie om de sleutel voor elk element te extraheren.
- resultSelector
- Func<TKey,IEnumerable<TSource>,TResult>
Een functie voor het maken van een resultaatwaarde van elke groep.
- comparer
- IEqualityComparer<TKey>
Een IEqualityComparer<T> om sleutels te vergelijken met.
Retouren
Een verzameling elementen van het type TResult waarbij elk element een projectie vertegenwoordigt voor een groep en de bijbehorende sleutel.
Uitzonderingen
source
resultSelector of keySelector is null.
Zie ook
Van toepassing op
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)
Hiermee worden de elementen van een reeks gegroepeerd op basis van een opgegeven sleutelkiezerfunctie.
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))
Type parameters
- TSource
Het type van de elementen van source.
- TKey
Het type sleutel dat wordt geretourneerd door keySelector.
Parameters
- source
- IEnumerable<TSource>
Een IEnumerable<T> van de elementen die moeten worden gegroepeerd.
- keySelector
- Func<TSource,TKey>
Een functie om de sleutel voor elk element te extraheren.
Retouren
Een IEnumerable<IGrouping<TKey, TSource>> in C# of IEnumerable(Of IGrouping(Of TKey, TSource)) in Visual Basic waarbij elk IGrouping<TKey,TElement>-object een reeks objecten en een sleutel bevat.
Uitzonderingen
source of keySelector is null.
Opmerkingen
Deze methode wordt geïmplementeerd met behulp van de uitgestelde uitvoering. De onmiddellijke retourwaarde is een object waarin alle informatie wordt opgeslagen die nodig is om de actie uit te voeren. De query die door deze methode wordt vertegenwoordigd, wordt pas uitgevoerd nadat het object is geïnventariseerd door de methode GetEnumerator rechtstreeks aan te roepen of door foreach te gebruiken in C# of For Each in Visual Basic.
Note
Zie de volgende artikelen voor voorbeelden van GroupBy:
- 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>)
De GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) methode retourneert een verzameling IGrouping<TKey,TElement> objecten, één voor elke afzonderlijke sleutel die is aangetroffen. Een IGrouping<TKey,TElement> is een IEnumerable<T> die ook een sleutel heeft die is gekoppeld aan de bijbehorende elementen.
De IGrouping<TKey,TElement> objecten worden gegenereerd in een volgorde op basis van de volgorde van de elementen in source die de eerste sleutel van elk IGrouping<TKey,TElement>element hebben geproduceerd. Elementen in een groepering worden geretourneerd in de volgorde waarin sourceze worden weergegeven.
De standaard gelijkheidsgelijker Default wordt gebruikt om sleutels te vergelijken.
In de syntaxis van de query-expressie wordt een component group by (C#) of Group By Into (Visual Basic) omgezet in een aanroep van GroupBy. Zie groepsclausule en Group By-component voor meer informatie en gebruiksvoorbeelden.
Zie ook
Van toepassing op
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)
Groepeert de elementen van een reeks op basis van een opgegeven sleutelkiezerfunctie en vergelijkt de sleutels met behulp van een opgegeven vergelijkingsfunctie.
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))
Type parameters
- TSource
Het type van de elementen van source.
- TKey
Het type sleutel dat wordt geretourneerd door keySelector.
Parameters
- source
- IEnumerable<TSource>
Een IEnumerable<T> van de elementen die moeten worden gegroepeerd.
- keySelector
- Func<TSource,TKey>
Een functie om de sleutel voor elk element te extraheren.
- comparer
- IEqualityComparer<TKey>
Een IEqualityComparer<T> om sleutels te vergelijken.
Retouren
Een IEnumerable<IGrouping<TKey, TSource>> in C# of IEnumerable(Of IGrouping(Of TKey, TSource)) in Visual Basic waar elk IGrouping<TKey,TElement>-object een verzameling objecten en een sleutel bevat.
Uitzonderingen
source of keySelector is null.
Opmerkingen
Deze methode wordt geïmplementeerd met behulp van de uitgestelde uitvoering. De onmiddellijke retourwaarde is een object waarin alle informatie wordt opgeslagen die nodig is om de actie uit te voeren. De query die door deze methode wordt vertegenwoordigd, wordt pas uitgevoerd nadat het object is geïnventariseerd door de methode GetEnumerator rechtstreeks aan te roepen of door foreach te gebruiken in C# of For Each in Visual Basic.
Note
Zie de volgende artikelen voor voorbeelden van GroupBy:
- 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>)
De GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) methode retourneert een verzameling IGrouping<TKey,TElement> objecten, één voor elke afzonderlijke sleutel die is aangetroffen. Een IGrouping<TKey,TElement> is een IEnumerable<T> die ook een sleutel heeft die is gekoppeld aan de bijbehorende elementen.
De IGrouping<TKey,TElement> objecten worden gegenereerd in een volgorde op basis van de volgorde van de elementen in source die de eerste sleutel van elk IGrouping<TKey,TElement>element hebben geproduceerd. Elementen in een groepering worden geretourneerd in de volgorde waarin sourceze worden weergegeven.
Als comparer dat het is null, wordt de standaard gelijkheidsgelijker Default gebruikt om sleutels te vergelijken.
Als twee sleutels worden beschouwd als gelijk aan comparer, wordt de eerste sleutel gekozen als de sleutel voor die groepering.
In de syntaxis van de query-expressie wordt een component group by (C#) of Group By Into (Visual Basic) omgezet in een aanroep van GroupBy. Zie groepsclausule en Group By-component voor meer informatie en gebruiksvoorbeelden.