Bagikan melalui


Enumerable.GroupBy Metode

Definisi

Mengelompokkan elemen urutan.

Overload

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu dan membuat nilai hasil dari setiap grup dan kuncinya. Elemen dari setiap grup diproyeksikan dengan menggunakan fungsi tertentu.

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>)

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu dan membuat nilai hasil dari setiap grup dan kuncinya. Nilai kunci dibandingkan dengan menggunakan perbandingan tertentu, dan elemen setiap grup diproyeksikan dengan menggunakan fungsi tertentu.

GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu dan memproyeksikan elemen untuk setiap grup dengan menggunakan fungsi tertentu.

GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci. Kunci dibandingkan dengan menggunakan perbandingan dan elemen setiap grup diproyeksikan dengan menggunakan fungsi yang ditentukan.

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu dan membuat nilai hasil dari setiap grup dan kuncinya.

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu dan membuat nilai hasil dari setiap grup dan kuncinya. Kunci dibandingkan dengan menggunakan pembanding tertentu.

GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu.

GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu dan membandingkan kunci dengan menggunakan perbandingan yang ditentukan.

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)

Sumber:
Grouping.cs
Sumber:
Grouping.cs
Sumber:
Grouping.cs

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu dan membuat nilai hasil dari setiap grup dan kuncinya. Elemen dari setiap grup diproyeksikan dengan menggunakan fungsi tertentu.

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)

Jenis parameter

TSource

Jenis elemen source.

TKey

Jenis kunci yang dikembalikan oleh keySelector.

TElement

Jenis elemen di setiap IGrouping<TKey,TElement>.

TResult

Jenis nilai hasil yang dikembalikan oleh resultSelector.

Parameter

source
IEnumerable<TSource>

Elemen IEnumerable<T> siapa yang akan dikelompokkan.

keySelector
Func<TSource,TKey>

Fungsi untuk mengekstrak kunci untuk setiap elemen.

elementSelector
Func<TSource,TElement>

Fungsi untuk memetakan setiap elemen sumber ke elemen dalam IGrouping<TKey,TElement>.

resultSelector
Func<TKey,IEnumerable<TElement>,TResult>

Fungsi untuk membuat nilai hasil dari setiap grup.

Mengembalikan

IEnumerable<TResult>

Kumpulan elemen jenis TResult di mana setiap elemen mewakili proyeksi atas grup dan kuncinya.

Pengecualian

source atau keySelector atau elementSelector atau resultSelector adalah null.

Contoh

Contoh kode berikut menunjukkan cara menggunakan GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) untuk mengelompokkan elemen yang diproyeksikan dari urutan lalu memproyeksikan urutan hasil jenis 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

Keterangan

Dalam sintaks ekspresi kueri, group by klausa (C#) atau Group By Into (Visual Basic) diterjemahkan ke pemanggilan GroupBy.

Lihat juga

Berlaku untuk

GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>)

Sumber:
Grouping.cs
Sumber:
Grouping.cs
Sumber:
Grouping.cs

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu dan membuat nilai hasil dari setiap grup dan kuncinya. Nilai kunci dibandingkan dengan menggunakan perbandingan tertentu, dan elemen setiap grup diproyeksikan dengan menggunakan fungsi tertentu.

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)

Jenis parameter

TSource

Jenis elemen source.

TKey

Jenis kunci yang dikembalikan oleh keySelector.

TElement

Jenis elemen di setiap IGrouping<TKey,TElement>.

TResult

Jenis nilai hasil yang dikembalikan oleh resultSelector.

Parameter

source
IEnumerable<TSource>

Elemen IEnumerable<T> siapa yang akan dikelompokkan.

keySelector
Func<TSource,TKey>

Fungsi untuk mengekstrak kunci untuk setiap elemen.

elementSelector
Func<TSource,TElement>

Fungsi untuk memetakan setiap elemen sumber ke elemen dalam IGrouping<TKey,TElement>.

resultSelector
Func<TKey,IEnumerable<TElement>,TResult>

Fungsi untuk membuat nilai hasil dari setiap grup.

comparer
IEqualityComparer<TKey>

Untuk IEqualityComparer<T> membandingkan kunci dengan.

Mengembalikan

IEnumerable<TResult>

Kumpulan elemen jenis TResult di mana setiap elemen mewakili proyeksi atas grup dan kuncinya.

Pengecualian

source atau keySelector atau elementSelector atau resultSelector adalah null.

Lihat juga

Berlaku untuk

GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)

Sumber:
Grouping.cs
Sumber:
Grouping.cs
Sumber:
Grouping.cs

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu dan memproyeksikan elemen untuk setiap grup dengan menggunakan fungsi tertentu.

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))

Jenis parameter

TSource

Jenis elemen source.

TKey

Jenis kunci yang dikembalikan oleh keySelector.

TElement

Jenis elemen dalam IGrouping<TKey,TElement>.

Parameter

source
IEnumerable<TSource>

Elemen IEnumerable<T> siapa yang akan dikelompokkan.

keySelector
Func<TSource,TKey>

Fungsi untuk mengekstrak kunci untuk setiap elemen.

elementSelector
Func<TSource,TElement>

Fungsi untuk memetakan setiap elemen sumber ke elemen di IGrouping<TKey,TElement>.

Mengembalikan

IEnumerable<IGrouping<TKey,TElement>>

IEnumerable<IGrouping<TKey, TElement>> Dalam C# atau IEnumerable(Of IGrouping(Of TKey, TElement)) di Visual Basic di mana setiap IGrouping<TKey,TElement> objek berisi kumpulan objek jenis TElement dan kunci.

Pengecualian

source atau keySelector atau elementSelector adalah null.

Contoh

Contoh kode berikut menunjukkan cara menggunakan GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) untuk mengelompokkan elemen urutan.

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

Dalam sintaks ekspresi kueri, group by klausa (C#) atau Group By Into (Visual Basic) diterjemahkan ke pemanggilan GroupBy. Terjemahan ekspresi kueri dalam contoh berikut setara dengan kueri dalam contoh di atas.

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

Catatan

Dalam ekspresi kueri C# atau Visual Basic, elemen dan ekspresi pemilihan kunci terjadi dalam urutan terbalik dari posisi argumennya dalam panggilan ke GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) metode .

Keterangan

Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metodenya GetEnumerator secara langsung atau dengan menggunakan foreach di C# atau For Each di Visual Basic.

Metode mengembalikan GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) kumpulan IGrouping<TKey,TElement> objek, satu untuk setiap kunci berbeda yang ditemui. IGrouping<TKey,TElement> adalah yang IEnumerable<T> juga memiliki kunci yang terkait dengan elemennya.

Objek IGrouping<TKey,TElement> dihasilkan dalam urutan berdasarkan urutan elemen dalam source yang menghasilkan kunci pertama masing-masing IGrouping<TKey,TElement>. Elemen dalam pengelompokan dihasilkan dalam urutan elemen yang menghasilkannya muncul di source.

Perbandingan Default kesetaraan default digunakan untuk membandingkan kunci.

Lihat juga

Berlaku untuk

GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)

Sumber:
Grouping.cs
Sumber:
Grouping.cs
Sumber:
Grouping.cs

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci. Kunci dibandingkan dengan menggunakan perbandingan dan elemen setiap grup diproyeksikan dengan menggunakan fungsi tertentu.

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))

Jenis parameter

TSource

Jenis elemen source.

TKey

Jenis kunci yang dikembalikan oleh keySelector.

TElement

Jenis elemen dalam IGrouping<TKey,TElement>.

Parameter

source
IEnumerable<TSource>

Elemen IEnumerable<T> siapa yang akan dikelompokkan.

keySelector
Func<TSource,TKey>

Fungsi untuk mengekstrak kunci untuk setiap elemen.

elementSelector
Func<TSource,TElement>

Fungsi untuk memetakan setiap elemen sumber ke elemen dalam IGrouping<TKey,TElement>.

comparer
IEqualityComparer<TKey>

Untuk IEqualityComparer<T> membandingkan kunci.

Mengembalikan

IEnumerable<IGrouping<TKey,TElement>>

IEnumerable<IGrouping<TKey, TElement>> Di C# atau IEnumerable(Of IGrouping(Of TKey, TElement)) di Visual Basic di mana setiap IGrouping<TKey,TElement> objek berisi kumpulan objek jenis TElement dan kunci.

Pengecualian

source atau keySelector atau elementSelector adalah null.

Keterangan

Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metodenya GetEnumerator secara langsung atau dengan menggunakan foreach di C# atau For Each di Visual Basic.

Metode mengembalikan GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) kumpulan IGrouping<TKey,TElement> objek, satu untuk setiap kunci berbeda yang ditemui. IGrouping<TKey,TElement> adalah yang IEnumerable<T> juga memiliki kunci yang terkait dengan elemennya.

Objek IGrouping<TKey,TElement> dihasilkan dalam urutan berdasarkan urutan elemen dalam source yang menghasilkan kunci pertama masing-masing IGrouping<TKey,TElement>. Elemen dalam pengelompokan dihasilkan dalam urutan elemen yang menghasilkannya muncul di source.

Jika comparer adalah null, perbandingan Default kesetaraan default digunakan untuk membandingkan kunci.

Jika dua kunci dianggap sama menurut comparer, kunci pertama dipilih sebagai kunci untuk pengelompokan tersebut.

Dalam sintaks ekspresi kueri, group by klausa (C#) atau Group By Into (Visual Basic) diterjemahkan ke pemanggilan GroupBy. Untuk informasi selengkapnya dan contoh penggunaan, lihat klausa grup dan Klausa Kelompokkan Menurut.

Lihat juga

Berlaku untuk

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)

Sumber:
Grouping.cs
Sumber:
Grouping.cs
Sumber:
Grouping.cs

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu dan membuat nilai hasil dari setiap grup dan kuncinya.

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)

Jenis parameter

TSource

Jenis elemen source.

TKey

Jenis kunci yang dikembalikan oleh keySelector.

TResult

Jenis nilai hasil yang dikembalikan oleh resultSelector.

Parameter

source
IEnumerable<TSource>

Elemen IEnumerable<T> yang akan dikelompokkan.

keySelector
Func<TSource,TKey>

Fungsi untuk mengekstrak kunci untuk setiap elemen.

resultSelector
Func<TKey,IEnumerable<TSource>,TResult>

Fungsi untuk membuat nilai hasil dari setiap grup.

Mengembalikan

IEnumerable<TResult>

Kumpulan elemen jenis TResult di mana setiap elemen mewakili proyeksi atas grup dan kuncinya.

Pengecualian

source atau keySelector atau resultSelector adalah null.

Contoh

Contoh kode berikut menunjukkan cara menggunakan GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) untuk mengelompokkan elemen urutan dan memproyeksikan urutan hasil jenis 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

Keterangan

Dalam sintaks ekspresi kueri, group by klausa (C#) atau Group By Into (Visual Basic) diterjemahkan ke pemanggilan GroupBy.

Lihat juga

Berlaku untuk

GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)

Sumber:
Grouping.cs
Sumber:
Grouping.cs
Sumber:
Grouping.cs

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu dan membuat nilai hasil dari setiap grup dan kuncinya. Kunci dibandingkan dengan menggunakan perbandingan yang ditentukan.

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)

Jenis parameter

TSource

Jenis elemen source.

TKey

Jenis kunci yang dikembalikan oleh keySelector.

TResult

Jenis nilai hasil yang dikembalikan oleh resultSelector.

Parameter

source
IEnumerable<TSource>

Elemen IEnumerable<T> yang akan dikelompokkan.

keySelector
Func<TSource,TKey>

Fungsi untuk mengekstrak kunci untuk setiap elemen.

resultSelector
Func<TKey,IEnumerable<TSource>,TResult>

Fungsi untuk membuat nilai hasil dari setiap grup.

comparer
IEqualityComparer<TKey>

Untuk IEqualityComparer<T> membandingkan kunci.

Mengembalikan

IEnumerable<TResult>

Kumpulan elemen jenis TResult di mana setiap elemen mewakili proyeksi atas grup dan kuncinya.

Pengecualian

source atau keySelector atau resultSelector adalah null.

Lihat juga

Berlaku untuk

GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Sumber:
Grouping.cs
Sumber:
Grouping.cs
Sumber:
Grouping.cs

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu.

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))

Jenis parameter

TSource

Jenis elemen source.

TKey

Jenis kunci yang dikembalikan oleh keySelector.

Parameter

source
IEnumerable<TSource>

Elemen IEnumerable<T> yang akan dikelompokkan.

keySelector
Func<TSource,TKey>

Fungsi untuk mengekstrak kunci untuk setiap elemen.

Mengembalikan

IEnumerable<IGrouping<TKey,TSource>>

IEnumerable<IGrouping<TKey, TSource>> di C# atau IEnumerable(Of IGrouping(Of TKey, TSource)) di Visual Basic di mana setiap IGrouping<TKey,TElement> objek berisi urutan objek dan kunci.

Pengecualian

source atau keySelector adalah null.

Keterangan

Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metodenya GetEnumerator secara langsung atau dengan menggunakan foreach dalam C# atau For Each di Visual Basic.

Metode mengembalikan GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) kumpulan IGrouping<TKey,TElement> objek, satu untuk setiap kunci berbeda yang ditemui. IGrouping<TKey,TElement> adalah IEnumerable<T> yang juga memiliki kunci yang terkait dengan elemennya.

Objek IGrouping<TKey,TElement> dihasilkan dalam urutan berdasarkan urutan elemen dalam source yang menghasilkan kunci pertama masing-masing IGrouping<TKey,TElement>. Elemen dalam pengelompokan dihasilkan dalam urutan yang muncul di source.

Perbandingan Default kesetaraan default digunakan untuk membandingkan kunci.

Dalam sintaks ekspresi kueri, group by klausa (C#) atau Group By Into (Visual Basic) diterjemahkan ke pemanggilan GroupBy. Untuk informasi selengkapnya dan contoh penggunaan, lihat klausa grup dan Klausa Kelompokkan Menurut.

Lihat juga

Berlaku untuk

GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)

Sumber:
Grouping.cs
Sumber:
Grouping.cs
Sumber:
Grouping.cs

Mengelompokkan elemen urutan sesuai dengan fungsi pemilih kunci tertentu dan membandingkan kunci dengan menggunakan perbandingan yang ditentukan.

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))

Jenis parameter

TSource

Jenis elemen source.

TKey

Jenis kunci yang dikembalikan oleh keySelector.

Parameter

source
IEnumerable<TSource>

Elemen IEnumerable<T> yang akan dikelompokkan.

keySelector
Func<TSource,TKey>

Fungsi untuk mengekstrak kunci untuk setiap elemen.

comparer
IEqualityComparer<TKey>

IEqualityComparer<T> Untuk membandingkan kunci.

Mengembalikan

IEnumerable<IGrouping<TKey,TSource>>

IEnumerable<IGrouping<TKey, TSource>> di C# atau IEnumerable(Of IGrouping(Of TKey, TSource)) di Visual Basic di mana setiap IGrouping<TKey,TElement> objek berisi kumpulan objek dan kunci.

Pengecualian

source atau keySelector adalah null.

Keterangan

Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metodenya GetEnumerator secara langsung atau dengan menggunakan foreach dalam C# atau For Each di Visual Basic.

Metode mengembalikan GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) kumpulan IGrouping<TKey,TElement> objek, satu untuk setiap kunci berbeda yang ditemui. IGrouping<TKey,TElement> adalah IEnumerable<T> yang juga memiliki kunci yang terkait dengan elemennya.

Objek IGrouping<TKey,TElement> dihasilkan dalam urutan berdasarkan urutan elemen dalam source yang menghasilkan kunci pertama masing-masing IGrouping<TKey,TElement>. Elemen dalam pengelompokan dihasilkan dalam urutan yang muncul di source.

Jika comparer adalah null, perbandingan Default kesetaraan default digunakan untuk membandingkan kunci.

Jika dua kunci dianggap sama menurut comparer, kunci pertama dipilih sebagai kunci untuk pengelompokan tersebut.

Dalam sintaks ekspresi kueri, group by klausa (C#) atau Group By Into (Visual Basic) diterjemahkan ke pemanggilan GroupBy. Untuk informasi selengkapnya dan contoh penggunaan, lihat klausa grup dan Klausa Kelompokkan Menurut.

Lihat juga

Berlaku untuk