Enumerable.GroupBy Yöntem

Tanım

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>, IEqualityComparer<TKey>)

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. 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,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)

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. 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>, IEqualityComparer<TKey>)

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.

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

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.

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

Bir dizinin öğelerini belirtilen bir 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>, IEqualityComparer<TKey>)

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. 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 sourcetürü.

TKey

tarafından keySelectordöndürülen anahtarın türü.

TElement

Her IGrouping<TKey,TElement>içindeki öğelerin türü.

TResult

tarafından resultSelectordö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.

elementSelector
Func<TSource,TElement>

Her kaynak öğeyi içindeki bir öğeye IGrouping<TKey,TElement>eşleme işlevi.

resultSelector
Func<TKey,IEnumerable<TElement>,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

IEnumerable<TResult>

Her öğenin bir grup ve anahtarı üzerindeki bir projeksiyonu temsil ettiği tür TResult öğeleri koleksiyonu.

Özel durumlar

source veya keySelector veya elementSelector veya resultSelector şeklindedir null.

Ayrıca bkz.

Şunlara uygulanır

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

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. 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 sourcetürü.

TKey

tarafından keySelectordöndürülen anahtarın türü.

TElement

Her IGrouping<TKey,TElement>içindeki öğelerin türü.

TResult

tarafından resultSelectordö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.

elementSelector
Func<TSource,TElement>

Her kaynak öğeyi içindeki bir öğeye IGrouping<TKey,TElement>eşleme işlevi.

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

Her gruptan sonuç değeri oluşturmak için bir işlev.

Döndürülenler

IEnumerable<TResult>

Her öğenin bir grup ve anahtarı üzerindeki bir projeksiyonu temsil ettiği tür TResult öğeleri koleksiyonu.

Özel durumlar

source veya keySelector veya elementSelector veya resultSelector şeklindedir null.

Örnekler

Aşağıdaki kod örneği, bir dizinin öngörülen öğelerini gruplandırmak ve ardından türünde TResultbir 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 bir group by (Visual 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,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.

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 sourcetürü.

TKey

tarafından keySelectordöndürülen anahtarın türü.

TElement

içindeki IGrouping<TKey,TElement>öğelerin 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.

elementSelector
Func<TSource,TElement>

Her kaynak öğeyi içindeki bir öğeye eşleme işlevi IGrouping<TKey,TElement>.

Döndürülenler

IEnumerable<IGrouping<TKey,TElement>>

Bir IEnumerableIGroupingTKey<<, C# veya IEnumerable'da TElement>>(Of IGrouping(Of TKey, TElement)) Visual Basic her IGrouping<TKey,TElement> nesnenin türünde TElement bir nesne koleksiyonu ve bir anahtar içerdiği.

Özel durumlar

source veya keySelector veya elementSelector şeklindedir null.

Örnekler

Aşağıdaki kod örneğinde, bir dizinin öğelerini gruplandırmak için nasıl kullanılacağı GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) gösterilmektedir.

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 bir group by (Visual C#) veya Group By Into (Visual Basic) yan tümcesi çağrısına GroupBydönüşür. 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

Visual 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. 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 Visual C# For Each içinde veya Visual Basic 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> öğ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, bunları üreten öğelerin içinde görünme sırasına sourcegö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>)

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 sourcetürü.

TKey

tarafından keySelectordöndürülen anahtarın türü.

TElement

içindeki IGrouping<TKey,TElement>öğelerin 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.

elementSelector
Func<TSource,TElement>

Her kaynak öğeyi içindeki bir öğeye IGrouping<TKey,TElement>eşleme işlevi.

comparer
IEqualityComparer<TKey>

Anahtarları karşılaştırmak için bir IEqualityComparer<T> .

Döndürülenler

IEnumerable<IGrouping<TKey,TElement>>

Bir IEnumerableIGroupingTKey<<, C# veya IEnumerable'da TElement>>(Of IGrouping(Of TKey, TElement)) Visual Basic her IGrouping<TKey,TElement> nesnenin türünde TElement bir nesne koleksiyonu ve bir anahtar içerdiği.

Özel durumlar

source veya keySelector veya elementSelector ş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 Visual C# For Each içinde veya Visual Basic kullanarak foreach nesne numaralandırılana kadar yürütülür.

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> öğ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, bunları üreten öğelerin içinde görünme sırasına sourcegö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 comparergö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 (Visual 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,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)

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 sourcetürü.

TKey

tarafından keySelectordöndürülen anahtarın türü.

TResult

tarafından resultSelectordö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

IEnumerable<TResult>

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,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)

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 sourcetürü.

TKey

tarafından keySelectordöndürülen anahtarın türü.

TResult

tarafından resultSelectordö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

IEnumerable<TResult>

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 TResultbir 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 (Visual 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>(IEnumerable<TSource>, Func<TSource,TKey>)

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 sourcetürü.

TKey

tarafından keySelectordö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>>

Bir IEnumerableIGroupingTKey<<, C>># veya IEnumerable(Of IGrouping(Of TKey, TSource)) içinde her IGrouping<TKey,TElement> nesnenin bir dizi nesne ve anahtar içerdiği Visual Basic.

Ö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 Visual C# For Each içinde veya Visual Basic kullanarak foreach nesne numaralandırılana kadar yürütülür.

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 sourcegö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 (Visual 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>)

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 sourcetürü.

TKey

tarafından keySelectordö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>>

Bir IEnumerableIGroupingTKey<<, C# veya IEnumerable'da TSource>>(Of IGrouping(Of TKey, TSource)), her IGrouping<TKey,TElement> nesnenin bir nesne koleksiyonu ve anahtar içerdiği Visual Basic.

Ö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 Visual C# For Each içinde veya Visual Basic kullanarak foreach nesne numaralandırılana kadar yürütülür.

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 sourcegö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 comparergö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 (Visual 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