Enumerable.GroupBy Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Csoportosítja a sorozat elemeit.
Túlterhelések
| Name | Description |
|---|---|
| GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) |
Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. Az egyes csoportok elemei egy adott függvény használatával lesznek kivetítve. |
| GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>) |
Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. A fő értékeket egy megadott összehasonlító használatával hasonlítjuk össze, és az egyes csoportok elemeit egy megadott függvény használatával vetjük ki. |
| GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) |
A szekvencia elemeit egy megadott kulcsválasztó függvény szerint csoportosítja, és az egyes csoportok elemeit egy megadott függvény használatával kivetíti. |
| GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) |
A szekvencia elemeit egy kulcsválasztó függvény szerint csoportosítja. A kulcsok összehasonlításához összehasonlítót kell használni, és az egyes csoportok elemeit egy megadott függvény használatával vetjük előre. |
| GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) |
Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. |
| GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>) |
Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. A kulcsok összehasonlítása egy megadott összehasonlító használatával történik. |
| GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) |
A szekvencia elemeit egy megadott kulcsválasztó függvény szerint csoportosítja. |
| GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) |
Egy sorozat elemeit egy megadott kulcsválasztó függvény szerint csoportosítja, és egy megadott összehasonlító használatával összehasonlítja a kulcsokat. |
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. Az egyes csoportok elemei egy adott függvény használatával lesznek kivetítve.
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)
Típusparaméterek
- TSource
A . elemeinek sourcetípusa.
- TKey
A visszaadott keySelectorkulcs típusa.
- TElement
Az egyes IGrouping<TKey,TElement>elemek típusa.
- TResult
A visszaadott resultSelectoreredményérték típusa.
Paraméterek
- source
- IEnumerable<TSource>
Egy IEnumerable<T> olyan elem, amelynek elemeit csoportosítani kell.
- keySelector
- Func<TSource,TKey>
Az egyes elemek kulcsának kinyerésére szolgáló függvény.
- elementSelector
- Func<TSource,TElement>
Egy függvény, amely az egyes forráselemeket egy elemhez rendeli egy IGrouping<TKey,TElement>.
- resultSelector
- Func<TKey,IEnumerable<TElement>,TResult>
Egy függvény, amely eredményértéket hoz létre az egyes csoportokból.
Válaszok
Olyan típusú TResult elemek gyűjteménye, amelyekben minden elem egy csoportra és annak kulcsára vetületet jelöl.
Kivételek
source vagy keySelectorelementSelectorresultSelector vagy az null.
Példák
Az alábbi példakód bemutatja, hogyan csoportosíthatja GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) a sorozat előrejelzett elemeit, majd hogyan vethet ki egy típusú TResulteredménysorozatot.
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
Megjegyzések
A lekérdezési kifejezés szintaxisában egy group by (C#) vagy Group By Into (Visual Basic) záradék GroupBy meghívására fordít.
Lásd még
A következőre érvényes:
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>)
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. A fő értékeket egy megadott összehasonlító használatával hasonlítjuk össze, és az egyes csoportok elemeit egy megadott függvény használatával vetjük ki.
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)
Típusparaméterek
- TSource
A . elemeinek sourcetípusa.
- TKey
A visszaadott keySelectorkulcs típusa.
- TElement
Az egyes IGrouping<TKey,TElement>elemek típusa.
- TResult
A visszaadott resultSelectoreredményérték típusa.
Paraméterek
- source
- IEnumerable<TSource>
Egy IEnumerable<T> olyan elem, amelynek elemeit csoportosítani kell.
- keySelector
- Func<TSource,TKey>
Az egyes elemek kulcsának kinyerésére szolgáló függvény.
- elementSelector
- Func<TSource,TElement>
Egy függvény, amely az egyes forráselemeket egy elemhez rendeli egy IGrouping<TKey,TElement>.
- resultSelector
- Func<TKey,IEnumerable<TElement>,TResult>
Egy függvény, amely eredményértéket hoz létre az egyes csoportokból.
- comparer
- IEqualityComparer<TKey>
A IEqualityComparer<T> kulcsok összehasonlítására használható.
Válaszok
Olyan típusú TResult elemek gyűjteménye, amelyekben minden elem egy csoportra és annak kulcsára vetületet jelöl.
Kivételek
source vagy keySelectorelementSelectorresultSelector vagy az null.
Lásd még
A következőre érvényes:
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
A szekvencia elemeit egy megadott kulcsválasztó függvény szerint csoportosítja, és az egyes csoportok elemeit egy megadott függvény használatával kivetíti.
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))
Típusparaméterek
- TSource
A . elemeinek sourcetípusa.
- TKey
A visszaadott keySelectorkulcs típusa.
- TElement
A . elemtípusa IGrouping<TKey,TElement>.
Paraméterek
- source
- IEnumerable<TSource>
Egy IEnumerable<T> olyan elem, amelynek elemeit csoportosítani kell.
- keySelector
- Func<TSource,TKey>
Az egyes elemek kulcsának kinyerésére szolgáló függvény.
- elementSelector
- Func<TSource,TElement>
Egy függvény, amely az egyes forráselemeket egy elemhez rendeli a IGrouping<TKey,TElement>.
Válaszok
Egy IEnumerable<IGrouping<TKey, TElement>> C# vagy IEnumerable(Of IGrouping(Of TKey, TElement)) Visual Basic, ahol minden IGrouping<TKey,TElement> objektum TElement típusú objektumgyűjteményt és egy kulcsot tartalmaz.
Kivételek
source vagy keySelectorelementSelector az nullis.
Példák
Az alábbi példakód bemutatja, hogyan csoportosíthatja GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) a sorozat elemeit.
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
A lekérdezési kifejezés szintaxisában egy group by (C#) vagy Group By Into (Visual Basic) záradék GroupBy meghívására fordít. A következő példában szereplő lekérdezési kifejezés fordítása egyenértékű a fenti példában szereplő lekérdezéssel.
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
C# vagy Visual Basic lekérdezési kifejezésben az elem- és kulcskijelölési kifejezések fordított sorrendben fordulnak elő a GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) metódus hívásában lévő argumentumpozíciójukból.
Megjegyzések
Ezt a metódust halasztott végrehajtással implementáljuk. Az azonnali visszatérési érték egy objektum, amely a művelet végrehajtásához szükséges összes információt tárolja. A metódus által képviselt lekérdezés csak akkor lesz végrehajtva, ha az objektumot a GetEnumerator metódus közvetlen meghívásával vagy foreach c# vagy For Each használatával Visual Basic.
A GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) metódus egy objektumgyűjteményt IGrouping<TKey,TElement> ad vissza, egyet minden egyes észlelt kulcshoz. Az an IGrouping<TKey,TElement> egy IEnumerable<T> olyan elem, amelynek az elemeihez egy kulcs is hozzá van rendelve.
Az IGrouping<TKey,TElement> objektumok az egyes sourcekulcsok első kulcsát eredményező elemek IGrouping<TKey,TElement> sorrendjének megfelelően lesznek létrehozva. A csoportosítás elemei abban a sorrendben jelennek meg, amelyben az előállított elemek megjelennek source.
Az alapértelmezett egyenlőség-összehasonlító Default a kulcsok összehasonlítására szolgál.
Lásd még
A következőre érvényes:
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
A szekvencia elemeit egy kulcsválasztó függvény szerint csoportosítja. A kulcsok összehasonlításához összehasonlítót kell használni, és az egyes csoportok elemeit egy megadott függvény használatával vetjük előre.
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))
Típusparaméterek
- TSource
A . elemeinek sourcetípusa.
- TKey
A visszaadott keySelectorkulcs típusa.
- TElement
A . elemtípusa IGrouping<TKey,TElement>.
Paraméterek
- source
- IEnumerable<TSource>
Egy IEnumerable<T> olyan elem, amelynek elemeit csoportosítani kell.
- keySelector
- Func<TSource,TKey>
Az egyes elemek kulcsának kinyerésére szolgáló függvény.
- elementSelector
- Func<TSource,TElement>
Egy függvény, amely az egyes forráselemeket egy elemhez rendeli egy IGrouping<TKey,TElement>.
- comparer
- IEqualityComparer<TKey>
Egy IEqualityComparer<T> a kulcsok összehasonlításához.
Válaszok
Egy IEnumerable<IGrouping<TKey, TElement>> C# vagy IEnumerable(Of IGrouping(Of TKey, TElement)) Visual Basic, ahol minden IGrouping<TKey,TElement> objektum TElement típusú objektumgyűjteményt és egy kulcsot tartalmaz.
Kivételek
source vagy keySelectorelementSelector az nullis.
Megjegyzések
Ezt a metódust halasztott végrehajtással implementáljuk. Az azonnali visszatérési érték egy objektum, amely a művelet végrehajtásához szükséges összes információt tárolja. A metódus által képviselt lekérdezés csak akkor lesz végrehajtva, ha az objektumot a GetEnumerator metódus közvetlen meghívásával vagy foreach c# vagy For Each használatával Visual Basic.
Note
GroupByPéldákat a következő cikkekben talál:
- 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>)
A GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) metódus egy objektumgyűjteményt IGrouping<TKey,TElement> ad vissza, egyet minden egyes észlelt kulcshoz. Az an IGrouping<TKey,TElement> egy IEnumerable<T> olyan elem, amelynek az elemeihez egy kulcs is hozzá van rendelve.
Az IGrouping<TKey,TElement> objektumok az egyes sourcekulcsok első kulcsát eredményező elemek IGrouping<TKey,TElement> sorrendjének megfelelően lesznek létrehozva. A csoportosítás elemei abban a sorrendben jelennek meg, amelyben az előállított elemek megjelennek source.
Ha comparer igen null, akkor az alapértelmezett egyenlőség-összehasonlító Default a kulcsok összehasonlítására szolgál.
Ha két kulcs aszerint compareregyenlő, az első kulcs lesz a csoportosítás kulcsa.
A lekérdezési kifejezés szintaxisában egy group by (C#) vagy Group By Into (Visual Basic) záradék GroupBy meghívására fordít. További információkért és használati példákért tekintse meg a csoport záradékát és a csoportosítási záradékot.
Lásd még
A következőre érvényes:
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából.
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)
Típusparaméterek
- TSource
A . elemeinek sourcetípusa.
- TKey
A visszaadott keySelectorkulcs típusa.
- TResult
A visszaadott resultSelectoreredményérték típusa.
Paraméterek
- source
- IEnumerable<TSource>
Egy IEnumerable<T> olyan elem, amelynek elemeit csoportosítani kell.
- keySelector
- Func<TSource,TKey>
Az egyes elemek kulcsának kinyerésére szolgáló függvény.
- resultSelector
- Func<TKey,IEnumerable<TSource>,TResult>
Egy függvény, amely eredményértéket hoz létre az egyes csoportokból.
Válaszok
Olyan típusú TResult elemek gyűjteménye, amelyekben minden elem egy csoportra és annak kulcsára vetületet jelöl.
Kivételek
source vagy keySelectorresultSelector az nullis.
Példák
Az alábbi példakód bemutatja, hogyan csoportosíthatja GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) a sorozat elemeit, és hogyan vethet be egy típusú TResulteredménysorozatot.
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
Megjegyzések
A lekérdezési kifejezés szintaxisában egy group by (C#) vagy Group By Into (Visual Basic) záradék GroupBy meghívására fordít.
Lásd még
A következőre érvényes:
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. A kulcsok összehasonlítása egy megadott összehasonlító használatával történik.
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)
Típusparaméterek
- TSource
A . elemeinek sourcetípusa.
- TKey
A visszaadott keySelectorkulcs típusa.
- TResult
A visszaadott resultSelectoreredményérték típusa.
Paraméterek
- source
- IEnumerable<TSource>
Egy IEnumerable<T> olyan elem, amelynek elemeit csoportosítani kell.
- keySelector
- Func<TSource,TKey>
Az egyes elemek kulcsának kinyerésére szolgáló függvény.
- resultSelector
- Func<TKey,IEnumerable<TSource>,TResult>
Egy függvény, amely eredményértéket hoz létre az egyes csoportokból.
- comparer
- IEqualityComparer<TKey>
A IEqualityComparer<T> kulcsok összehasonlítására használható.
Válaszok
Olyan típusú TResult elemek gyűjteménye, amelyekben minden elem egy csoportra és annak kulcsára vetületet jelöl.
Kivételek
source vagy keySelectorresultSelector az nullis.
Lásd még
A következőre érvényes:
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
A szekvencia elemeit egy megadott kulcsválasztó függvény szerint csoportosítja.
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))
Típusparaméterek
- TSource
A . elemeinek sourcetípusa.
- TKey
A visszaadott keySelectorkulcs típusa.
Paraméterek
- source
- IEnumerable<TSource>
Egy IEnumerable<T> olyan elem, amelynek elemeit csoportosítani kell.
- keySelector
- Func<TSource,TKey>
Az egyes elemek kulcsának kinyerésére szolgáló függvény.
Válaszok
Egy IEnumerable<IGrouping<TKey, TSource>> C# vagy IEnumerable(Of IGrouping(Of TKey, TSource)) Visual Basic, ahol minden IGrouping<TKey,TElement> objektum objektumsorozatot és kulcsot tartalmaz.
Kivételek
source vagy keySelector az null.
Megjegyzések
Ezt a metódust halasztott végrehajtással implementáljuk. Az azonnali visszatérési érték egy objektum, amely a művelet végrehajtásához szükséges összes információt tárolja. A metódus által képviselt lekérdezés csak akkor lesz végrehajtva, ha az objektumot a GetEnumerator metódus közvetlen meghívásával vagy foreach c# vagy For Each használatával Visual Basic.
Note
GroupByPéldákat a következő cikkekben talál:
- 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>)
A GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) metódus egy objektumgyűjteményt IGrouping<TKey,TElement> ad vissza, egyet minden egyes észlelt kulcshoz. Az an IGrouping<TKey,TElement> egy IEnumerable<T> olyan elem, amelynek az elemeihez egy kulcs is hozzá van rendelve.
Az IGrouping<TKey,TElement> objektumok az egyes sourcekulcsok első kulcsát eredményező elemek IGrouping<TKey,TElement> sorrendjének megfelelően lesznek létrehozva. A csoportosítás elemei abban a sorrendben jelennek meg, amelyben sourcemegjelennek.
Az alapértelmezett egyenlőség-összehasonlító Default a kulcsok összehasonlítására szolgál.
A lekérdezési kifejezés szintaxisában egy group by (C#) vagy Group By Into (Visual Basic) záradék GroupBy meghívására fordít. További információkért és használati példákért tekintse meg a csoport záradékát és a csoportosítási záradékot.
Lásd még
A következőre érvényes:
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
- Forrás:
- Grouping.cs
Egy sorozat elemeit egy megadott kulcsválasztó függvény szerint csoportosítja, és egy megadott összehasonlító használatával összehasonlítja a kulcsokat.
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))
Típusparaméterek
- TSource
A . elemeinek sourcetípusa.
- TKey
A visszaadott keySelectorkulcs típusa.
Paraméterek
- source
- IEnumerable<TSource>
Egy IEnumerable<T> olyan elem, amelynek elemeit csoportosítani kell.
- keySelector
- Func<TSource,TKey>
Az egyes elemek kulcsának kinyerésére szolgáló függvény.
- comparer
- IEqualityComparer<TKey>
Egy IEqualityComparer<T> a kulcsok összehasonlításához.
Válaszok
Egy IEnumerable<IGrouping<TKey, TSource>> C# vagy IEnumerable(Of IGrouping(Of TKey, TSource)) Visual Basic, ahol minden IGrouping<TKey,TElement> objektum objektumgyűjteményt és kulcsot tartalmaz.
Kivételek
source vagy keySelector az null.
Megjegyzések
Ezt a metódust halasztott végrehajtással implementáljuk. Az azonnali visszatérési érték egy objektum, amely a művelet végrehajtásához szükséges összes információt tárolja. A metódus által képviselt lekérdezés csak akkor lesz végrehajtva, ha az objektumot a GetEnumerator metódus közvetlen meghívásával vagy foreach c# vagy For Each használatával Visual Basic.
Note
GroupByPéldákat a következő cikkekben talál:
- 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>)
A GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) metódus egy objektumgyűjteményt IGrouping<TKey,TElement> ad vissza, egyet minden egyes észlelt kulcshoz. Az an IGrouping<TKey,TElement> egy IEnumerable<T> olyan elem, amelynek az elemeihez egy kulcs is hozzá van rendelve.
Az IGrouping<TKey,TElement> objektumok az egyes sourcekulcsok első kulcsát eredményező elemek IGrouping<TKey,TElement> sorrendjének megfelelően lesznek létrehozva. A csoportosítás elemei abban a sorrendben jelennek meg, amelyben sourcemegjelennek.
Ha comparer igen null, akkor az alapértelmezett egyenlőség-összehasonlító Default a kulcsok összehasonlítására szolgál.
Ha két kulcs aszerint compareregyenlő, az első kulcs lesz a csoportosítás kulcsa.
A lekérdezési kifejezés szintaxisában egy group by (C#) vagy Group By Into (Visual Basic) záradék GroupBy meghívására fordít. További információkért és használati példákért tekintse meg a csoport záradékát és a csoportosítási záradékot.