Enumerable.GroupBy Metódus

Definíció

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

IEnumerable<TResult>

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

IEnumerable<TResult>

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

IEnumerable<IGrouping<TKey,TElement>>

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

IEnumerable<IGrouping<TKey,TElement>>

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.

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

IEnumerable<TResult>

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

IEnumerable<TResult>

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

IEnumerable<IGrouping<TKey,TSource>>

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.

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

IEnumerable<IGrouping<TKey,TSource>>

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.

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.

Lásd még

A következőre érvényes: