Enumerable.GroupBy Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Seskupí prvky sekvence.
Přetížení
| Name | Description |
|---|---|
| GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) |
Seskupí prvky sekvence podle zadané funkce selektoru klíčů a vytvoří výslednou hodnotu z každé skupiny a jejího klíče. Prvky každé skupiny se promítnou pomocí zadané funkce. |
| GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>) |
Seskupí prvky sekvence podle zadané funkce selektoru klíčů a vytvoří výslednou hodnotu z každé skupiny a jejího klíče. Hodnoty klíče se porovnávají pomocí zadaného porovnávače a prvky každé skupiny se promítnou pomocí zadané funkce. |
| GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) |
Seskupí prvky sekvence podle zadané funkce selektoru klíčů a projekty prvky pro každou skupinu pomocí zadané funkce. |
| GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) |
Seskupí prvky sekvence podle funkce selektoru klíče. Klíče se porovnávají pomocí porovnávače a jednotlivé prvky skupiny se promítají pomocí zadané funkce. |
| GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) |
Seskupí prvky sekvence podle zadané funkce selektoru klíčů a vytvoří výslednou hodnotu z každé skupiny a jejího klíče. |
| GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>) |
Seskupí prvky sekvence podle zadané funkce selektoru klíčů a vytvoří výslednou hodnotu z každé skupiny a jejího klíče. Klíče se porovnávají pomocí zadaného porovnávače. |
| GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) |
Seskupí prvky sekvence podle zadané funkce selektoru klíče. |
| GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) |
Seskupí prvky sekvence podle zadané funkce selektoru klíčů a porovná klíče pomocí zadaného porovnávače. |
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
Seskupí prvky sekvence podle zadané funkce selektoru klíčů a vytvoří výslednou hodnotu z každé skupiny a jejího klíče. Prvky každé skupiny se promítnou pomocí zadané funkce.
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)
Parametry typu
- TSource
Typ prvků .source
- TKey
Typ klíče vráceného keySelector.
- TElement
Typ prvků v každém IGrouping<TKey,TElement>.
- TResult
Typ výsledné hodnoty vrácené resultSelectorhodnotou .
Parametry
- source
- IEnumerable<TSource>
Jejíž IEnumerable<T> prvky se seskupí.
- keySelector
- Func<TSource,TKey>
Funkce, která extrahuje klíč pro každý prvek.
- elementSelector
- Func<TSource,TElement>
Funkce pro mapování každého zdrojového prvku na prvek v objektu IGrouping<TKey,TElement>.
- resultSelector
- Func<TKey,IEnumerable<TElement>,TResult>
Funkce, která vytvoří výslednou hodnotu z každé skupiny.
Návraty
Kolekce prvků typu TResult , kde každý prvek představuje projekci nad skupinou a jeho klíčem.
Výjimky
source nebo keySelectorelementSelector nebo resultSelector je null.
Příklady
Následující příklad kódu ukazuje, jak použít GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) k seskupení projektovaných prvků sekvence a pak projektovat posloupnost výsledků typu 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
Poznámky
V syntaxi výrazu dotazu se klauzule group by (C#) nebo Group By Into (Visual Basic) překládá na vyvolání GroupBy.
Viz také
Platí pro
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>)
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
Seskupí prvky sekvence podle zadané funkce selektoru klíčů a vytvoří výslednou hodnotu z každé skupiny a jejího klíče. Hodnoty klíče se porovnávají pomocí zadaného porovnávače a prvky každé skupiny se promítnou pomocí zadané funkce.
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);
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)
Parametry typu
- TSource
Typ prvků .source
- TKey
Typ klíče vráceného keySelector.
- TElement
Typ prvků v každém IGrouping<TKey,TElement>.
- TResult
Typ výsledné hodnoty vrácené resultSelectorhodnotou .
Parametry
- source
- IEnumerable<TSource>
Jejíž IEnumerable<T> prvky se seskupí.
- keySelector
- Func<TSource,TKey>
Funkce, která extrahuje klíč pro každý prvek.
- elementSelector
- Func<TSource,TElement>
Funkce pro mapování každého zdrojového prvku na prvek v objektu IGrouping<TKey,TElement>.
- resultSelector
- Func<TKey,IEnumerable<TElement>,TResult>
Funkce, která vytvoří výslednou hodnotu z každé skupiny.
- comparer
- IEqualityComparer<TKey>
Porovnávat IEqualityComparer<T> klíče s.
Návraty
Kolekce prvků typu TResult , kde každý prvek představuje projekci nad skupinou a jeho klíčem.
Výjimky
source nebo keySelectorelementSelector nebo resultSelector je null.
Viz také
Platí pro
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
Seskupí prvky sekvence podle zadané funkce selektoru klíčů a projekty prvky pro každou skupinu pomocí zadané funkce.
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))
Parametry typu
- TSource
Typ prvků .source
- TKey
Typ klíče vráceného keySelector.
- TElement
Typ prvků v souboru IGrouping<TKey,TElement>.
Parametry
- source
- IEnumerable<TSource>
Jejíž IEnumerable<T> prvky se seskupí.
- keySelector
- Func<TSource,TKey>
Funkce, která extrahuje klíč pro každý prvek.
- elementSelector
- Func<TSource,TElement>
Funkce, která mapuje každý zdrojový prvek na prvek v objektu IGrouping<TKey,TElement>.
Návraty
IEnumerable<IGrouping<TKey, TElement>> v jazyce C# nebo IEnumerable(Of IGrouping(Of TKey, TElement)) v Visual Basic, kde každý objekt IGrouping<TKey,TElement> obsahuje kolekci objektů typu TElement a klíče.
Výjimky
source nebo keySelectorelementSelector je null.
Příklady
Následující příklad kódu ukazuje použití GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) k seskupení prvků sekvence.
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
V syntaxi výrazu dotazu se klauzule group by (C#) nebo Group By Into (Visual Basic) překládá na vyvolání GroupBy. Překlad výrazu dotazu v následujícím příkladu odpovídá dotazu v předchozím příkladu.
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
Ve výrazu dotazu C# nebo Visual Basic výrazy výběru elementu a klíče probíhají v obráceném pořadí od pozic argumentů ve volání metody GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>).
Poznámky
Tato metoda se implementuje pomocí odloženého spuštění. Okamžitá návratová hodnota je objekt, který ukládá všechny informace potřebné k provedení akce. Dotaz reprezentovaný touto metodou se nespustí, dokud objekt nevyčte buď voláním metody GetEnumerator přímo nebo pomocí foreach v jazyce C# nebo For Each v Visual Basic.
Metoda GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) vrátí kolekci IGrouping<TKey,TElement> objektů, jednu pro každý jedinečný klíč, který byl zjištěn. Je IGrouping<TKey,TElement> to také IEnumerable<T> klíč přidružený k jeho prvkům.
Objekty IGrouping<TKey,TElement> se vygenerují v pořadí na základě pořadí prvků, které source vytvořily první klíč každého IGrouping<TKey,TElement>. Prvky ve seskupení se poskytují v pořadí, v jakém jsou prvky, které je vytvořily, uvedeny v source.
Výchozí porovnávač Default rovnosti se používá k porovnání klíčů.
Viz také
Platí pro
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
Seskupí prvky sekvence podle funkce selektoru klíče. Klíče se porovnávají pomocí porovnávače a jednotlivé prvky skupiny se promítají pomocí zadané funkce.
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);
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))
Parametry typu
- TSource
Typ prvků .source
- TKey
Typ klíče vráceného keySelector.
- TElement
Typ prvků v souboru IGrouping<TKey,TElement>.
Parametry
- source
- IEnumerable<TSource>
Jejíž IEnumerable<T> prvky se seskupí.
- keySelector
- Func<TSource,TKey>
Funkce, která extrahuje klíč pro každý prvek.
- elementSelector
- Func<TSource,TElement>
Funkce pro mapování každého zdrojového prvku na prvek v objektu IGrouping<TKey,TElement>.
- comparer
- IEqualityComparer<TKey>
Porovnávat IEqualityComparer<T> klíče.
Návraty
IEnumerable<IGrouping<TKey, TElement>> v jazyce C# nebo IEnumerable(Of IGrouping(Of TKey, TElement)) v Visual Basic, kde každý objekt IGrouping<TKey,TElement> obsahuje kolekci objektů typu TElement a klíče.
Výjimky
source nebo keySelectorelementSelector je null.
Poznámky
Tato metoda se implementuje pomocí odloženého spuštění. Okamžitá návratová hodnota je objekt, který ukládá všechny informace potřebné k provedení akce. Dotaz reprezentovaný touto metodou se nespustí, dokud objekt nevyčte buď voláním metody GetEnumerator přímo nebo pomocí foreach v jazyce C# nebo For Each v Visual Basic.
Note
Příklady GroupBynajdete v následujících článcích:
- 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>)
Metoda GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) vrátí kolekci IGrouping<TKey,TElement> objektů, jednu pro každý jedinečný klíč, který byl zjištěn. Je IGrouping<TKey,TElement> to také IEnumerable<T> klíč přidružený k jeho prvkům.
Objekty IGrouping<TKey,TElement> se vygenerují v pořadí na základě pořadí prvků, které source vytvořily první klíč každého IGrouping<TKey,TElement>. Prvky ve seskupení se poskytují v pořadí, v jakém jsou prvky, které je vytvořily, uvedeny v source.
Pokud comparer ano null, použije se výchozí porovnávač Default rovnosti k porovnání klíčů.
Pokud jsou dva klíče považovány za stejné podle comparer, první klíč je zvolen jako klíč pro toto seskupení.
V syntaxi výrazu dotazu se klauzule group by (C#) nebo Group By Into (Visual Basic) překládá na vyvolání GroupBy. Další informace a příklady použití najdete v tématu klauzule group a Group By Clause.
Viz také
Platí pro
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
Seskupí prvky sekvence podle zadané funkce selektoru klíčů a vytvoří výslednou hodnotu z každé skupiny a jejího klíče.
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)
Parametry typu
- TSource
Typ prvků .source
- TKey
Typ klíče vráceného keySelector.
- TResult
Typ výsledné hodnoty vrácené resultSelectorhodnotou .
Parametry
- source
- IEnumerable<TSource>
Jejíž IEnumerable<T> prvky se seskupí.
- keySelector
- Func<TSource,TKey>
Funkce, která extrahuje klíč pro každý prvek.
- resultSelector
- Func<TKey,IEnumerable<TSource>,TResult>
Funkce, která vytvoří výslednou hodnotu z každé skupiny.
Návraty
Kolekce prvků typu TResult , kde každý prvek představuje projekci nad skupinou a jeho klíčem.
Výjimky
source nebo keySelectorresultSelector je null.
Příklady
Následující příklad kódu ukazuje, jak použít GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) k seskupení prvků sekvence a projekt posloupnosti výsledků typu 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
Poznámky
V syntaxi výrazu dotazu se klauzule group by (C#) nebo Group By Into (Visual Basic) překládá na vyvolání GroupBy.
Viz také
Platí pro
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
Seskupí prvky sekvence podle zadané funkce selektoru klíčů a vytvoří výslednou hodnotu z každé skupiny a jejího klíče. Klíče se porovnávají pomocí zadaného porovnávače.
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);
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)
Parametry typu
- TSource
Typ prvků .source
- TKey
Typ klíče vráceného keySelector.
- TResult
Typ výsledné hodnoty vrácené resultSelectorhodnotou .
Parametry
- source
- IEnumerable<TSource>
Jejíž IEnumerable<T> prvky se seskupí.
- keySelector
- Func<TSource,TKey>
Funkce, která extrahuje klíč pro každý prvek.
- resultSelector
- Func<TKey,IEnumerable<TSource>,TResult>
Funkce, která vytvoří výslednou hodnotu z každé skupiny.
- comparer
- IEqualityComparer<TKey>
Porovnávat IEqualityComparer<T> klíče s.
Návraty
Kolekce prvků typu TResult , kde každý prvek představuje projekci nad skupinou a jeho klíčem.
Výjimky
source nebo keySelectorresultSelector je null.
Viz také
Platí pro
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
Seskupí prvky sekvence podle zadané funkce selektoru klíč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))
Parametry typu
- TSource
Typ prvků .source
- TKey
Typ klíče vráceného keySelector.
Parametry
- source
- IEnumerable<TSource>
Jejíž IEnumerable<T> prvky se seskupí.
- keySelector
- Func<TSource,TKey>
Funkce, která extrahuje klíč pro každý prvek.
Návraty
Jazyk IEnumerable<IGrouping<TKey, TSource>> C# nebo IEnumerable(Of IGrouping(Of TKey, TSource)) Visual Basic, kde každý IGrouping<TKey,TElement> objekt obsahuje posloupnost objektů a klíč.
Výjimky
source nebo keySelector je null.
Poznámky
Tato metoda se implementuje pomocí odloženého spuštění. Okamžitá návratová hodnota je objekt, který ukládá všechny informace potřebné k provedení akce. Dotaz reprezentovaný touto metodou se nespustí, dokud objekt nevyčte buď voláním metody GetEnumerator přímo nebo pomocí foreach v jazyce C# nebo For Each v Visual Basic.
Note
Příklady GroupBynajdete v následujících článcích:
- 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>)
Metoda GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) vrátí kolekci IGrouping<TKey,TElement> objektů, jednu pro každý jedinečný klíč, který byl zjištěn. Je IGrouping<TKey,TElement> to také IEnumerable<T> klíč přidružený k jeho prvkům.
Objekty IGrouping<TKey,TElement> se vygenerují v pořadí na základě pořadí prvků, které source vytvořily první klíč každého IGrouping<TKey,TElement>. Prvky ve seskupení jsou uvedeny v pořadí, v jakém jsou uvedeny v source.
Výchozí porovnávač Default rovnosti se používá k porovnání klíčů.
V syntaxi výrazu dotazu se klauzule group by (C#) nebo Group By Into (Visual Basic) překládá na vyvolání GroupBy. Další informace a příklady použití najdete v tématu klauzule group a Group By Clause.
Viz také
Platí pro
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
- Zdroj:
- Grouping.cs
Seskupí prvky sekvence podle zadané funkce selektoru klíčů a porovná klíče pomocí zadaného porovnávač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, 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);
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))
Parametry typu
- TSource
Typ prvků .source
- TKey
Typ klíče vráceného keySelector.
Parametry
- source
- IEnumerable<TSource>
Jejíž IEnumerable<T> prvky se seskupí.
- keySelector
- Func<TSource,TKey>
Funkce, která extrahuje klíč pro každý prvek.
- comparer
- IEqualityComparer<TKey>
Porovnávat IEqualityComparer<T> klíče.
Návraty
IEnumerable<IGrouping<TKey, TSource>> v jazyce C# nebo IEnumerable(Of IGrouping(Of TKey, TSource)) v Visual Basic, kde každý objekt IGrouping<TKey,TElement> obsahuje kolekci objektů a klíč.
Výjimky
source nebo keySelector je null.
Poznámky
Tato metoda se implementuje pomocí odloženého spuštění. Okamžitá návratová hodnota je objekt, který ukládá všechny informace potřebné k provedení akce. Dotaz reprezentovaný touto metodou se nespustí, dokud objekt nevyčte buď voláním metody GetEnumerator přímo nebo pomocí foreach v jazyce C# nebo For Each v Visual Basic.
Note
Příklady GroupBynajdete v následujících článcích:
- 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>)
Metoda GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) vrátí kolekci IGrouping<TKey,TElement> objektů, jednu pro každý jedinečný klíč, který byl zjištěn. Je IGrouping<TKey,TElement> to také IEnumerable<T> klíč přidružený k jeho prvkům.
Objekty IGrouping<TKey,TElement> se vygenerují v pořadí na základě pořadí prvků, které source vytvořily první klíč každého IGrouping<TKey,TElement>. Prvky ve seskupení jsou uvedeny v pořadí, v jakém jsou uvedeny v source.
Pokud comparer ano null, použije se výchozí porovnávač Default rovnosti k porovnání klíčů.
Pokud jsou dva klíče považovány za stejné podle comparer, první klíč je zvolen jako klíč pro toto seskupení.
V syntaxi výrazu dotazu se klauzule group by (C#) nebo Group By Into (Visual Basic) překládá na vyvolání GroupBy. Další informace a příklady použití najdete v tématu klauzule group a Group By Clause.