Enumerable.GroupBy Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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
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>>
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>>
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.
Catatan
Untuk contoh GroupBy
, lihat artikel berikut ini:
- 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>)
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
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
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>>
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.
Catatan
Untuk contoh GroupBy
, lihat artikel berikut ini:
- 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>)
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>>
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.
Catatan
Untuk contoh GroupBy
, lihat artikel berikut ini:
- 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>)
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.