Enumerable.GroupBy Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir dizinin öğelerini gruplandırma.
Aşırı Yüklemeler
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) |
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. Her grubun öğeleri, belirtilen bir işlev kullanılarak yansıtılır. |
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>) |
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. Anahtar değerleri belirtilen bir karşılaştırıcı kullanılarak karşılaştırılır ve her grubun öğeleri belirtilen bir işlev kullanılarak yansıtılır. |
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) |
Bir dizinin öğelerini belirtilen bir anahtar seçici işlevine göre gruplandırın ve belirtilen bir işlevi kullanarak her grubun öğelerini projeler. |
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) |
Bir dizinin öğelerini bir anahtar seçici işlevine göre gruplandırın. Anahtarlar bir karşılaştırıcı kullanılarak karşılaştırılır ve her grubun öğeleri belirtilen bir işlev kullanılarak yansıtılır. |
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) |
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. |
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>) |
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. Anahtarlar, belirtilen bir karşılaştırıcı kullanılarak karşılaştırılır. |
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) |
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın. |
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) |
Bir dizinin öğelerini belirtilen bir anahtar seçici işlevine göre gruplandırır ve belirtilen bir karşılaştırıcıyı kullanarak anahtarları karşılaştırır. |
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. Her grubun öğeleri, belirtilen bir işlev kullanılarak yansıtılır.
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ür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
tarafından keySelector
döndürülen anahtarın türü.
- TElement
Her IGrouping<TKey,TElement>bir içindeki öğelerin türü.
- TResult
tarafından resultSelector
döndürülen sonuç değerinin türü.
Parametreler
- source
- IEnumerable<TSource>
Gruplandırılan IEnumerable<T> öğeleri.
- keySelector
- Func<TSource,TKey>
Her öğenin anahtarını ayıklamak için bir işlev.
- elementSelector
- Func<TSource,TElement>
Her kaynak öğeyi içindeki bir öğeye eşlemek için bir IGrouping<TKey,TElement>işlev.
- resultSelector
- Func<TKey,IEnumerable<TElement>,TResult>
Her gruptan sonuç değeri oluşturmak için bir işlev.
Döndürülenler
Her öğenin bir grup ve anahtarı üzerindeki bir projeksiyonu temsil ettiği tür TResult
öğeleri koleksiyonu.
Özel durumlar
source
veya keySelector
veya elementSelector
resultSelector
veya şeklindedir null
.
Örnekler
Aşağıdaki kod örneği, bir dizinin öngörülen öğelerini gruplandırmak ve ardından türünde TResult
bir sonuç dizisi yansıtmak için nasıl kullanılacağını GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) gösterir.
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
Açıklamalar
Sorgu ifadesi söz diziminde, ( group by
C#) veya Group By Into
(Visual Basic) yan tümcesi çağrısına çevrilir GroupBy.
Ayrıca bkz.
Şunlara uygulanır
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>)
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
Bir dizinin öğelerini belirtilen anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. Anahtar değerleri belirtilen bir karşılaştırıcı kullanılarak karşılaştırılır ve her grubun öğeleri belirtilen bir işlev kullanılarak yansıtılır.
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ür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
tarafından keySelector
döndürülen anahtarın türü.
- TElement
Her IGrouping<TKey,TElement>bir içindeki öğelerin türü.
- TResult
tarafından resultSelector
döndürülen sonuç değerinin türü.
Parametreler
- source
- IEnumerable<TSource>
Gruplandırılan IEnumerable<T> öğeleri.
- keySelector
- Func<TSource,TKey>
Her öğenin anahtarını ayıklamak için bir işlev.
- elementSelector
- Func<TSource,TElement>
Her kaynak öğeyi içindeki bir öğeye eşlemek için bir IGrouping<TKey,TElement>işlev.
- resultSelector
- Func<TKey,IEnumerable<TElement>,TResult>
Her gruptan sonuç değeri oluşturmak için bir işlev.
- comparer
- IEqualityComparer<TKey>
Anahtarları karşılaştırmak için bir IEqualityComparer<T> .
Döndürülenler
Her öğenin bir grup ve anahtarı üzerindeki bir projeksiyonu temsil ettiği tür TResult
öğeleri koleksiyonu.
Özel durumlar
source
veya keySelector
veya elementSelector
resultSelector
veya şeklindedir null
.
Ayrıca bkz.
Şunlara uygulanır
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
Bir dizinin öğelerini belirtilen bir anahtar seçici işlevine göre gruplandırın ve belirtilen bir işlevi kullanarak her grubun öğelerini projeler.
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ür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
tarafından keySelector
döndürülen anahtarın türü.
- TElement
içindeki IGrouping<TKey,TElement>öğelerin türü.
Parametreler
- source
- IEnumerable<TSource>
Gruplandırılan IEnumerable<T> öğeleri.
- keySelector
- Func<TSource,TKey>
Her öğenin anahtarını ayıklamak için bir işlev.
- elementSelector
- Func<TSource,TElement>
Her kaynak öğeyi içindeki IGrouping<TKey,TElement>bir öğeye eşlemek için bir işlev.
Döndürülenler
IEnumerable<IGrouping<TKey, TElement>>
C# dilinde veya IEnumerable(Of IGrouping(Of TKey, TElement))
Visual Basic'te her IGrouping<TKey,TElement> nesnenin tür TElement
ve anahtar türünde bir nesne koleksiyonu içerdiği bir.
Özel durumlar
source
veya keySelector
veya elementSelector
şeklindedir null
.
Örnekler
Aşağıdaki kod örneği, bir dizinin öğelerini gruplandırmak için nasıl kullanılacağını GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) gösterir.
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
Sorgu ifadesi söz diziminde, ( group by
C#) veya Group By Into
(Visual Basic) yan tümcesi çağrısına çevrilir GroupBy. Aşağıdaki örnekteki sorgu ifadesinin çevirisi, yukarıdaki örnekteki sorguya eşdeğerdir.
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
Not
C# veya Visual Basic sorgu ifadesinde, öğe ve anahtar seçim ifadeleri yöntemine yapılan bir çağrıda GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) bağımsız değişken konumlarından ters sırada gerçekleşir.
Açıklamalar
Bu yöntem ertelenmiş yürütme kullanılarak uygulanır. Anında dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, doğrudan yöntemini çağırarak GetEnumerator
veya C# içinde veya For Each
Visual Basic'te kullanarak foreach
nesne numaralandırılana kadar yürütülür.
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) yöntemi, karşılaşılan her ayrı anahtar için bir nesne koleksiyonu IGrouping<TKey,TElement> döndürür. , IGrouping<TKey,TElement> aynı zamanda öğeleriyle ilişkilendirilmiş bir anahtarı olan bir IEnumerable<T> öğesidir.
IGrouping<TKey,TElement> Nesneler, her IGrouping<TKey,TElement>birinin ilk anahtarını oluşturan içindeki source
öğelerin sırasına göre bir sırayla sunulur. Gruplandırmadaki öğeler, bunları oluşturan öğelerin içinde görünme sırasına source
göre oluşturulur.
Varsayılan eşitlik karşılaştırıcısı Default anahtarları karşılaştırmak için kullanılır.
Ayrıca bkz.
Şunlara uygulanır
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
Bir dizinin öğelerini bir anahtar seçici işlevine göre gruplandırın. Anahtarlar bir karşılaştırıcı kullanılarak karşılaştırılır ve her grubun öğeleri belirtilen bir işlev kullanılarak yansıtılır.
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ür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
tarafından keySelector
döndürülen anahtarın türü.
- TElement
içindeki IGrouping<TKey,TElement>öğelerin türü.
Parametreler
- source
- IEnumerable<TSource>
Gruplandırılan IEnumerable<T> öğeleri.
- keySelector
- Func<TSource,TKey>
Her öğenin anahtarını ayıklamak için bir işlev.
- elementSelector
- Func<TSource,TElement>
Her kaynak öğeyi içindeki bir öğeye eşlemek için bir IGrouping<TKey,TElement>işlev.
- comparer
- IEqualityComparer<TKey>
Anahtarları karşılaştırmak için bir IEqualityComparer<T> .
Döndürülenler
IEnumerable<IGrouping<TKey, TElement>>
C# dilinde veya IEnumerable(Of IGrouping(Of TKey, TElement))
Visual Basic'te her IGrouping<TKey,TElement> nesnenin tür TElement
ve anahtar türünde bir nesne koleksiyonu içerdiği bir.
Özel durumlar
source
veya keySelector
veya elementSelector
şeklindedir null
.
Açıklamalar
Bu yöntem ertelenmiş yürütme kullanılarak uygulanır. Anında dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, doğrudan yöntemini çağırarak GetEnumerator
veya C# içinde veya For Each
Visual Basic'te kullanarak foreach
nesne numaralandırılana kadar yürütülür.
Not
örnekleri GroupBy
için aşağıdaki makalelere bakın:
- 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>)
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) yöntemi, karşılaşılan her ayrı anahtar için bir nesne koleksiyonu IGrouping<TKey,TElement> döndürür. , IGrouping<TKey,TElement> aynı zamanda öğeleriyle ilişkilendirilmiş bir anahtarı olan bir IEnumerable<T> öğesidir.
IGrouping<TKey,TElement> Nesneler, her IGrouping<TKey,TElement>birinin ilk anahtarını oluşturan içindeki source
öğelerin sırasına göre bir sırayla sunulur. Gruplandırmadaki öğeler, bunları oluşturan öğelerin içinde görünme sırasına source
göre oluşturulur.
ise comparer
null
, anahtarları karşılaştırmak için varsayılan eşitlik karşılaştırıcısı Default kullanılır.
İki anahtar değerine comparer
göre eşit olarak kabul edilirse, bu gruplandırma için anahtar olarak ilk anahtar seçilir.
Sorgu ifadesi söz diziminde, ( group by
C#) veya Group By Into
(Visual Basic) yan tümcesi çağrısına çevrilir GroupBy. Daha fazla bilgi ve kullanım örnekleri için bkz. group yan tümcesi ve Group By Yan Tümcesi.
Ayrıca bkz.
Şunlara uygulanır
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
Bir dizinin öğelerini belirtilen bir anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur.
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ür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
tarafından keySelector
döndürülen anahtarın türü.
- TResult
tarafından resultSelector
döndürülen sonuç değerinin türü.
Parametreler
- source
- IEnumerable<TSource>
Öğeleri IEnumerable<T> gruplandırılan bir.
- keySelector
- Func<TSource,TKey>
Her öğenin anahtarını ayıklamak için bir işlev.
- resultSelector
- Func<TKey,IEnumerable<TSource>,TResult>
Her gruptan sonuç değeri oluşturmak için bir işlev.
Döndürülenler
Her öğenin bir grup ve anahtarı üzerindeki bir projeksiyonu temsil ettiği tür TResult
öğeleri koleksiyonu.
Özel durumlar
source
veya keySelector
veya resultSelector
şeklindedir null
.
Örnekler
Aşağıdaki kod örneği, bir dizinin öğelerini gruplandırmak ve türünde TResult
bir sonuç dizisi yansıtmak için nasıl kullanılacağını GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) gösterir.
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
Açıklamalar
Sorgu ifadesi söz diziminde bir group by
(C#) veya Group By Into
(Visual Basic) yan tümcesi çağrısına GroupBydönüşür.
Ayrıca bkz.
Şunlara uygulanır
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
Bir dizinin öğelerini belirtilen bir anahtar seçici işlevine göre gruplandırın ve her gruptan ve anahtarından bir sonuç değeri oluşturur. Anahtarlar, belirtilen bir karşılaştırıcı kullanılarak karşılaştırılır.
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ür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
tarafından keySelector
döndürülen anahtarın türü.
- TResult
tarafından resultSelector
döndürülen sonuç değerinin türü.
Parametreler
- source
- IEnumerable<TSource>
Öğeleri IEnumerable<T> gruplandırılan bir.
- keySelector
- Func<TSource,TKey>
Her öğenin anahtarını ayıklamak için bir işlev.
- resultSelector
- Func<TKey,IEnumerable<TSource>,TResult>
Her gruptan sonuç değeri oluşturmak için bir işlev.
- comparer
- IEqualityComparer<TKey>
IEqualityComparer<T> Anahtarları karşılaştırmak için bir.
Döndürülenler
Her öğenin bir grup ve anahtarı üzerindeki bir projeksiyonu temsil ettiği tür TResult
öğeleri koleksiyonu.
Özel durumlar
source
veya keySelector
veya resultSelector
şeklindedir null
.
Ayrıca bkz.
Şunlara uygulanır
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
Bir dizinin öğelerini belirtilen bir anahtar seçici işlevine göre gruplandırın.
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ür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
tarafından keySelector
döndürülen anahtarın türü.
Parametreler
- source
- IEnumerable<TSource>
Öğeleri IEnumerable<T> gruplandırılan bir.
- keySelector
- Func<TSource,TKey>
Her öğenin anahtarını ayıklamak için bir işlev.
Döndürülenler
IEnumerable<IGrouping<TKey, TSource>>
C# dilinde veya IEnumerable(Of IGrouping(Of TKey, TSource))
Visual Basic'te her IGrouping<TKey,TElement> nesnenin bir dizi nesne ve anahtar içerdiği bir.
Özel durumlar
source
veya keySelector
şeklindedir null
.
Açıklamalar
Bu yöntem ertelenmiş yürütme kullanılarak uygulanır. Hemen dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, doğrudan yöntemini çağırarak GetEnumerator
veya C# içinde veya For Each
Visual Basic'te kullanarak foreach
nesne numaralandırılana kadar yürütülür.
Not
örnekleri GroupBy
için aşağıdaki makalelere bakın:
- 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>)
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) yöntemi, karşılaşılan her ayrı anahtar için bir nesne koleksiyonu IGrouping<TKey,TElement> döndürür. , IGrouping<TKey,TElement> öğeleriyle ilişkilendirilmiş bir anahtarı da olan bir IEnumerable<T> anahtardır.
IGrouping<TKey,TElement> Nesneler, her IGrouping<TKey,TElement>birinin ilk anahtarını oluşturan öğelerinin source
sırasına göre bir sırayla sunulur. Gruplandırmadaki öğeler, içinde source
göründükleri sırayla sunulur.
Varsayılan eşitlik karşılaştırıcısı Default anahtarları karşılaştırmak için kullanılır.
Sorgu ifadesi söz diziminde bir group by
(C#) veya Group By Into
(Visual Basic) yan tümcesi çağrısına GroupBydönüşür. Daha fazla bilgi ve kullanım örnekleri için bkz. group yan tümcesi ve Group By Yan Tümcesi.
Ayrıca bkz.
Şunlara uygulanır
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
- Kaynak:
- Grouping.cs
Bir dizinin öğelerini belirtilen bir anahtar seçici işlevine göre gruplandırır ve belirtilen bir karşılaştırıcıyı kullanarak anahtarları karşılaştırır.
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ür Parametreleri
- TSource
öğelerinin source
türü.
- TKey
tarafından keySelector
döndürülen anahtarın türü.
Parametreler
- source
- IEnumerable<TSource>
Öğeleri IEnumerable<T> gruplandırılan bir.
- keySelector
- Func<TSource,TKey>
Her öğenin anahtarını ayıklamak için bir işlev.
- comparer
- IEqualityComparer<TKey>
Anahtarları karşılaştırmak için bir IEqualityComparer<T> .
Döndürülenler
IEnumerable<IGrouping<TKey, TSource>>
C# dilinde veya IEnumerable(Of IGrouping(Of TKey, TSource))
Visual Basic'te her IGrouping<TKey,TElement> nesnenin bir nesne koleksiyonu ve anahtar içerdiği bir.
Özel durumlar
source
veya keySelector
şeklindedir null
.
Açıklamalar
Bu yöntem ertelenmiş yürütme kullanılarak uygulanır. Hemen dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, doğrudan yöntemini çağırarak GetEnumerator
veya C# içinde veya For Each
Visual Basic'te kullanarak foreach
nesne numaralandırılana kadar yürütülür.
Not
örnekleri GroupBy
için aşağıdaki makalelere bakın:
- 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>)
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) yöntemi, karşılaşılan her ayrı anahtar için bir nesne koleksiyonu IGrouping<TKey,TElement> döndürür. , IGrouping<TKey,TElement> öğeleriyle ilişkilendirilmiş bir anahtarı da olan bir IEnumerable<T> anahtardır.
IGrouping<TKey,TElement> Nesneler, her IGrouping<TKey,TElement>birinin ilk anahtarını oluşturan öğelerinin source
sırasına göre bir sırayla sunulur. Gruplandırmadaki öğeler, içinde source
göründükleri sırayla sunulur.
ise comparer
null
, anahtarları karşılaştırmak için varsayılan eşitlik karşılaştırıcısı Default kullanılır.
İki anahtar değerine comparer
göre eşit olarak kabul edilirse, bu gruplandırma için anahtar olarak ilk anahtar seçilir.
Sorgu ifadesi söz diziminde bir group by
(C#) veya Group By Into
(Visual Basic) yan tümcesi çağrısına GroupBydönüşür. Daha fazla bilgi ve kullanım örnekleri için bkz. group yan tümcesi ve Group By Yan Tümcesi.