Queryable.GroupBy Metódus

Definíció

Csoportosítja a sorozat elemeit.

Túlterhelések

Name Description
GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>)

Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. A kulcsokat egy megadott összehasonlító használatával hasonlítjuk össze, és az egyes csoportok elemeit egy megadott függvény használatával vetjük ki.

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

Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. Az egyes csoportok elemei egy adott függvény használatával lesznek kivetítve.

GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>)

A szekvencia elemeit egy megadott kulcsválasztó függvény szerint csoportosítja, és az egyes csoportok elemeit egy megadott függvény használatával kivetíti.

GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>)

Csoportosítja a sorozat elemeit, és egy megadott függvény használatával projekteli az egyes csoportok elemeit. A fő értékeket egy megadott összehasonlító használatával hasonlítjuk össze.

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

Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. A kulcsok összehasonlítása egy megadott összehasonlító használatával történik.

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

Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából.

GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>)

Egy sorozat elemeit egy megadott kulcsválasztó függvény szerint csoportosítja, és egy megadott összehasonlító használatával összehasonlítja a kulcsokat.

GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>)

A szekvencia elemeit egy megadott kulcsválasztó függvény szerint csoportosítja.

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

Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs

Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. A kulcsokat egy megadott összehasonlító használatával hasonlítjuk össze, és az egyes csoportok elemeit egy megadott függvény használatával vetjük ki.

public:
generic <typename TSource, typename TKey, typename TElement, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TResult> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TSource, TElement> ^> ^ elementSelector, System::Linq::Expressions::Expression<Func<TKey, System::Collections::Generic::IEnumerable<TElement> ^, TResult> ^> ^ resultSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TElement,TResult>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TElement,TResult>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TElement,TResult>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Element>, 'Result>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<'Result>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Element>, 'Result>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement, TResult) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), elementSelector As Expression(Of Func(Of TSource, TElement)), resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TElement), TResult)), comparer As IEqualityComparer(Of TKey)) As IQueryable(Of TResult)

Típusparaméterek

TSource

A . elemeinek sourcetípusa.

TKey

A függvény által visszaadott kulcs típusa.keySelector

TElement

Az egyes IGrouping<TKey,TElement>elemek típusa.

TResult

A visszaadott resultSelectoreredményérték típusa.

Paraméterek

source
IQueryable<TSource>

Egy IQueryable<T> olyan elem, amelynek elemeit csoportosítani kell.

keySelector
Expression<Func<TSource,TKey>>

Az egyes elemek kulcsának kinyerésére szolgáló függvény.

elementSelector
Expression<Func<TSource,TElement>>

Egy függvény, amely az egyes forráselemeket egy elemhez rendeli egy IGrouping<TKey,TElement>.

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

Egy függvény, amely eredményértéket hoz létre az egyes csoportokból.

comparer
IEqualityComparer<TKey>

Egy IEqualityComparer<T> a kulcsok összehasonlításához.

Válaszok

IQueryable<TResult>

Olyan T:System.Linq.IQueryable`1 elem, amelynek típusargumentumával rendelkezik TResult , és ahol minden elem egy csoport és annak kulcsa fölötti vetületet jelöl.

Attribútumok

Kivételek

sourcevagy keySelector vagy elementSelectorresultSelectorcomparer az.null

Megjegyzések

Ez a metódus legalább egy típusparamétert Expression<TDelegate> használ, amelynek típusargumentuma az Func<T,TResult> egyik típus. Ezekhez a paraméterekhez átadhat egy lambda kifejezést, és az Expression<TDelegate>egy .

A GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) metódus létrehoz egy olyan metódust MethodCallExpression , amely önmagát generált általános metódusként jeleníti GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) meg. Ezután átadja a MethodCallExpression paraméter tulajdonsága által CreateQuery<TElement>(Expression) képviselt metódusnak IQueryProviderProvider.source

A meghívást GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) jelképező kifejezésfa végrehajtása során előforduló lekérdezési viselkedés a paraméter típusának source implementálásától függ. A várt viselkedés az, hogy az egyes elemek meghívásával source kapott kulcsértékek alapján csoportosítja az elemek elemeitkeySelector. A comparer paraméter a kulcsértékek összehasonlítására szolgál. A elementSelector paraméter az egyes csoportok elemeinek kivetítésére szolgál, a resultSelector paraméter pedig az egyes csoportok és kulcsok eredményértékének lekérésére szolgál.

A következőre érvényes:

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

Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs

Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. Az egyes csoportok elemei egy adott függvény használatával lesznek kivetítve.

public:
generic <typename TSource, typename TKey, typename TElement, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TResult> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TSource, TElement> ^> ^ elementSelector, System::Linq::Expressions::Expression<Func<TKey, System::Collections::Generic::IEnumerable<TElement> ^, TResult> ^> ^ resultSelector);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TElement,TResult>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>> resultSelector);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TElement,TResult>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult>> resultSelector);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Element>, 'Result>> -> System.Linq.IQueryable<'Result>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Element>, 'Result>> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement, TResult) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), elementSelector As Expression(Of Func(Of TSource, TElement)), resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TElement), TResult))) As IQueryable(Of TResult)

Típusparaméterek

TSource

A . elemeinek sourcetípusa.

TKey

A függvény által visszaadott kulcs típusa.keySelector

TElement

Az egyes IGrouping<TKey,TElement>elemek típusa.

TResult

A visszaadott resultSelectoreredményérték típusa.

Paraméterek

source
IQueryable<TSource>

Egy IQueryable<T> olyan elem, amelynek elemeit csoportosítani kell.

keySelector
Expression<Func<TSource,TKey>>

Az egyes elemek kulcsának kinyerésére szolgáló függvény.

elementSelector
Expression<Func<TSource,TElement>>

Egy függvény, amely az egyes forráselemeket egy elemhez rendeli egy IGrouping<TKey,TElement>.

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

Egy függvény, amely eredményértéket hoz létre az egyes csoportokból.

Válaszok

IQueryable<TResult>

Olyan T:System.Linq.IQueryable`1 elem, amelynek típusargumentumával rendelkezik TResult , és ahol minden elem egy csoport és annak kulcsa fölötti vetületet jelöl.

Attribútumok

Kivételek

source vagy keySelectorelementSelectorresultSelector vagy az null.

Példák

Az alábbi példakód bemutatja, hogyan csoportosíthatja GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>) a sorozat elemeit, és hogyan vethet be egy típusú TResulteredménysorozatot.

class Pet
{
    public string Name { get; set; }
    public double Age { get; set; }
}

public static void 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.AsQueryable().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

Shared 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 valuesby 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.AsQueryable().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 with this age: " & result.Count)
        output.AppendLine("Minimum age: " & result.Min)
        output.AppendLine("Maximum age: " & result.Max)
    Next

    ' Display the output.
    MsgBox(output.ToString())

    ' This code produces the following output:

    '  Age group: 8
    '  Number of pets with this age: 1
    '  Minimum age: 8.3
    '  Maximum age: 8.3

    '  Age group: 4
    '  Number of pets with this age: 2
    '  Minimum age: 4.3
    '  Maximum age: 4.9

    '  Age group: 1
    '  Number of pets with this age: 1
    '  Minimum age: 1.5
    '  Maximum age: 1.5
End Sub

Megjegyzések

Ez a metódus legalább egy típusparamétert Expression<TDelegate> használ, amelynek típusargumentuma az Func<T,TResult> egyik típus. Ezekhez a paraméterekhez átadhat egy lambda kifejezést, és az Expression<TDelegate>egy .

A GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>) metódus létrehoz egy olyan metódust MethodCallExpression , amely önmagát generált általános metódusként jeleníti GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>) meg. Ezután átadja a MethodCallExpression paraméter tulajdonsága által CreateQuery<TElement>(Expression) képviselt metódusnak IQueryProviderProvider.source

A meghívást GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>) jelképező kifejezésfa végrehajtása során előforduló lekérdezési viselkedés a paraméter típusának source implementálásától függ. A várt viselkedés az, hogy az egyes elemek meghívásával source kapott kulcsértékek alapján csoportosítja az elemek elemeitkeySelector. A elementSelector paraméter az egyes csoportok elemeinek kivetítésére szolgál, a resultSelector paraméter pedig az egyes csoportok és kulcsok eredményértékének lekérésére szolgál.

A következőre érvényes:

GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>)

Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs

A szekvencia elemeit egy megadott kulcsválasztó függvény szerint csoportosítja, és az egyes csoportok elemeit egy megadott függvény használatával kivetíti.

public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<System::Linq::IGrouping<TKey, TElement> ^> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TSource, TElement> ^> ^ elementSelector);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Element>>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Element>>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), elementSelector As Expression(Of Func(Of TSource, TElement))) As IQueryable(Of IGrouping(Of TKey, TElement))

Típusparaméterek

TSource

A . elemeinek sourcetípusa.

TKey

A függvény által visszaadott kulcs típusa.keySelector

TElement

Az egyes IGrouping<TKey,TElement>elemek típusa.

Paraméterek

source
IQueryable<TSource>

Egy IQueryable<T> olyan elem, amelynek elemeit csoportosítani kell.

keySelector
Expression<Func<TSource,TKey>>

Az egyes elemek kulcsának kinyerésére szolgáló függvény.

elementSelector
Expression<Func<TSource,TElement>>

Egy függvény, amely az egyes forráselemeket egy elemhez rendeli egy IGrouping<TKey,TElement>.

Válaszok

IQueryable<IGrouping<TKey,TElement>>

Egy IQueryable<IGrouping<TKey, TElement>> C# vagy IQueryable(Of IGrouping(Of TKey, TElement)) Visual Basic, ahol minden IGrouping<TKey,TElement>TElement típusú objektumok sorozatát tartalmazza.

Attribútumok

Kivételek

source vagy keySelectorelementSelector az nullis.

Példák

Az alábbi példakód bemutatja, hogyan csoportosíthatja GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) a sorozat elemeit.

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void GroupByEx2()
{
    // Create a list of Pet objects.
    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 Pet.Age as the key.
    // Use Pet.Name as the value for each entry.
    IEnumerable<IGrouping<int, string>> query =
        pets.AsQueryable().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

Shared Sub GroupByEx2()
    ' 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 Pet.Age as the key.
    ' Use Pet.Name as the value for each entry.
    Dim query As IEnumerable(Of IGrouping(Of Integer, String)) = _
        pets.AsQueryable().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(String.Format("  {0}", name))
        Next
    Next

    ' Display the output.
    MsgBox(output.ToString())
End Sub

' This code produces the following output:
'
' 8
'  Barley
' 4
'  Boots
'  Daisy
' 1
'  Whiskers

Megjegyzések

Ez a metódus legalább egy típusparamétert Expression<TDelegate> használ, amelynek típusargumentuma az Func<T,TResult> egyik típus. Ezekhez a paraméterekhez átadhat egy lambda kifejezést, és az Expression<TDelegate>egy .

A GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) metódus létrehoz egy olyan metódust MethodCallExpression , amely önmagát generált általános metódusként jeleníti GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) meg. Ezután átadja a MethodCallExpression paraméter tulajdonsága által CreateQuery<TElement>(Expression) képviselt metódusnak IQueryProviderProvider.source

A meghívást GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) jelképező kifejezésfa végrehajtása során előforduló lekérdezési viselkedés a paraméter típusának source implementálásától függ. A várt viselkedés az, hogy az elemek elemeit source egy kulcsérték szerint csoportosítja, amelyet az egyes elemek invokálásával keySelector szerez be. Az egyes elemeken meghív elementSelector egy eredményelemet.

A következőre érvényes:

GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>)

Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs

Csoportosítja a sorozat elemeit, és egy megadott függvény használatával projekteli az egyes csoportok elemeit. A fő értékeket egy megadott összehasonlító használatával hasonlítjuk össze.

public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<System::Linq::IGrouping<TKey, TElement> ^> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TSource, TElement> ^> ^ elementSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TSource,TElement>> elementSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Element>>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Source, 'Element>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Element>>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), elementSelector As Expression(Of Func(Of TSource, TElement)), comparer As IEqualityComparer(Of TKey)) As IQueryable(Of IGrouping(Of TKey, TElement))

Típusparaméterek

TSource

A . elemeinek sourcetípusa.

TKey

A függvény által visszaadott kulcs típusa.keySelector

TElement

Az egyes IGrouping<TKey,TElement>elemek típusa.

Paraméterek

source
IQueryable<TSource>

Egy IQueryable<T> olyan elem, amelynek elemeit csoportosítani kell.

keySelector
Expression<Func<TSource,TKey>>

Az egyes elemek kulcsának kinyerésére szolgáló függvény.

elementSelector
Expression<Func<TSource,TElement>>

Egy függvény, amely az egyes forráselemeket egy elemhez rendeli egy IGrouping<TKey,TElement>.

comparer
IEqualityComparer<TKey>

Egy IEqualityComparer<T> a kulcsok összehasonlításához.

Válaszok

IQueryable<IGrouping<TKey,TElement>>

Egy IQueryable<IGrouping<TKey, TElement>> C# vagy IQueryable(Of IGrouping(Of TKey, TElement)) Visual Basic, ahol minden IGrouping<TKey,TElement>TElement típusú objektumok sorozatát tartalmazza.

Attribútumok

Kivételek

source vagy keySelectorelementSelectorcomparer vagy az null.

Megjegyzések

Ez a metódus legalább egy típusparamétert Expression<TDelegate> használ, amelynek típusargumentuma az Func<T,TResult> egyik típus. Ezekhez a paraméterekhez átadhat egy lambda kifejezést, és az Expression<TDelegate>egy .

A GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) metódus létrehoz egy olyan metódust MethodCallExpression , amely önmagát generált általános metódusként jeleníti GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) meg. Ezután átadja a MethodCallExpression paraméter tulajdonsága által CreateQuery<TElement>(Expression) képviselt metódusnak IQueryProviderProvider.source

A meghívást GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) jelképező kifejezésfa végrehajtása során előforduló lekérdezési viselkedés a paraméter típusának source implementálásától függ. A várt viselkedés az, hogy az elemek elemeit source egy kulcsérték szerint csoportosítja, amelyet az egyes elemek invokálásával keySelector szerez be. A fő értékeket a rendszer a használatával comparerhasonlítja össze. A elementSelector paramétert minden elemen meghívja a függvény az eredményelem lekéréséhez.

A következőre érvényes:

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

Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs

Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából. A kulcsok összehasonlítása egy megadott összehasonlító használatával történik.

public:
generic <typename TSource, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TResult> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TKey, System::Collections::Generic::IEnumerable<TSource> ^, TResult> ^> ^ resultSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TResult>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TResult>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TResult>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Source>, 'Result>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<'Result>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Source>, 'Result>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TResult) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TSource), TResult)), comparer As IEqualityComparer(Of TKey)) As IQueryable(Of TResult)

Típusparaméterek

TSource

A . elemeinek sourcetípusa.

TKey

A függvény által visszaadott kulcs típusa.keySelector

TResult

A visszaadott resultSelectoreredményérték típusa.

Paraméterek

source
IQueryable<TSource>

Egy IQueryable<T> olyan elem, amelynek elemeit csoportosítani kell.

keySelector
Expression<Func<TSource,TKey>>

Az egyes elemek kulcsának kinyerésére szolgáló függvény.

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

Egy függvény, amely eredményértéket hoz létre az egyes csoportokból.

comparer
IEqualityComparer<TKey>

Egy IEqualityComparer<T> a kulcsok összehasonlításához.

Válaszok

IQueryable<TResult>

Olyan T:System.Linq.IQueryable`1 elem, amelynek típusargumentumával rendelkezik TResult , és ahol minden elem egy csoport és annak kulcsa fölötti vetületet jelöl.

Attribútumok

Kivételek

source vagy keySelectorresultSelectorcomparer vagy az null.

Megjegyzések

Ez a metódus legalább egy típusparamétert Expression<TDelegate> használ, amelynek típusargumentuma az Func<T,TResult> egyik típus. Ezekhez a paraméterekhez átadhat egy lambda kifejezést, és az Expression<TDelegate>egy .

A GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) metódus létrehoz egy olyan metódust MethodCallExpression , amely önmagát generált általános metódusként jeleníti GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) meg. Ezután átadja a MethodCallExpression paraméter tulajdonsága által CreateQuery<TElement>(Expression) képviselt metódusnak IQueryProviderProvider.source

A meghívást GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) jelképező kifejezésfa végrehajtása során előforduló lekérdezési viselkedés a paraméter típusának source implementálásától függ. A várt viselkedés az, hogy az egyes elemek meghívásával source kapott kulcsértékek alapján csoportosítja az elemek elemeitkeySelector. A comparer paraméter a kulcsok összehasonlítására szolgál, a resultSelector paraméter pedig az egyes csoportok és kulcsok eredményértékének lekérésére szolgál.

A következőre érvényes:

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

Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs

Csoportosítja a szekvencia elemeit egy megadott kulcsválasztó függvény szerint, és létrehoz egy eredményértéket az egyes csoportokból és kulcsából.

public:
generic <typename TSource, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TResult> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Linq::Expressions::Expression<Func<TKey, System::Collections::Generic::IEnumerable<TSource> ^, TResult> ^> ^ resultSelector);
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TResult>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>> resultSelector);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
public static System.Linq.IQueryable<TResult> GroupBy<TSource,TKey,TResult>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Linq.Expressions.Expression<Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult>> resultSelector);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Source>, 'Result>> -> System.Linq.IQueryable<'Result>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Linq.Expressions.Expression<Func<'Key, seq<'Source>, 'Result>> -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TResult) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), resultSelector As Expression(Of Func(Of TKey, IEnumerable(Of TSource), TResult))) As IQueryable(Of TResult)

Típusparaméterek

TSource

A . elemeinek sourcetípusa.

TKey

A függvény által visszaadott kulcs típusa.keySelector

TResult

A visszaadott resultSelectoreredményérték típusa.

Paraméterek

source
IQueryable<TSource>

Egy IQueryable<T> olyan elem, amelynek elemeit csoportosítani kell.

keySelector
Expression<Func<TSource,TKey>>

Az egyes elemek kulcsának kinyerésére szolgáló függvény.

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

Egy függvény, amely eredményértéket hoz létre az egyes csoportokból.

Válaszok

IQueryable<TResult>

Olyan T:System.Linq.IQueryable`1 elem, amelynek típusargumentumával rendelkezik TResult , és ahol minden elem egy csoport és annak kulcsa fölötti vetületet jelöl.

Attribútumok

Kivételek

source vagy keySelectorresultSelector az nullis.

Példák

Az alábbi példakód bemutatja, hogyan csoportosíthatja GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) a sorozat elemeit, és hogyan vethet be egy típusú TResulteredménysorozatot.

class Pet
{
    public string Name { get; set; }
    public double Age { get; set; }
}

public static void GroupByEx3()
{
    // Create a list of pets.
    List<Pet> petsList =
        new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
                       new Pet { Name="Boots", Age=4.9 },
                       new Pet { Name="Whiskers", Age=1.5 },
                       new Pet { Name="Daisy", Age=4.3 } };

    // Group Pet objects by the Math.Floor of their age.
    // Then project an anonymous type from each group
    // that consists of the key, the count of the group's
    // elements, and the minimum and maximum age in the group.
    var query = petsList.AsQueryable().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

Shared 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.AsQueryable().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 with this age: " & result.Count)
        output.AppendLine("Minimum age: " & result.Min)
        output.AppendLine("Maximum age: " & result.Max)
    Next

    ' Display the output.
    MsgBox(output.ToString())

    ' This code produces the following output:

    '  Age group: 8
    '  Number of pets with this age: 1
    '  Minimum age: 8.3
    '  Maximum age: 8.3

    '  Age group: 4
    '  Number of pets with this age: 2
    '  Minimum age: 4.3
    '  Maximum age: 4.9

    '  Age group: 1
    '  Number of pets with this age: 1
    '  Minimum age: 1.5
    '  Maximum age: 1.5
End Sub

Megjegyzések

Ez a metódus legalább egy típusparamétert Expression<TDelegate> használ, amelynek típusargumentuma az Func<T,TResult> egyik típus. Ezekhez a paraméterekhez átadhat egy lambda kifejezést, és az Expression<TDelegate>egy .

A GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) metódus létrehoz egy olyan metódust MethodCallExpression , amely önmagát generált általános metódusként jeleníti GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) meg. Ezután átadja a MethodCallExpression paraméter tulajdonsága által CreateQuery<TElement>(Expression) képviselt metódusnak IQueryProviderProvider.source

A meghívást GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) jelképező kifejezésfa végrehajtása során előforduló lekérdezési viselkedés a paraméter típusának source implementálásától függ. A várt viselkedés az, hogy az elemek elemeit source egy kulcsérték szerint csoportosítja, amelyet az egyes elemek invokálásával keySelector szerez be. A resultSelector paraméter az egyes csoportok és kulcsok eredményértékének lekérésére szolgál.

A következőre érvényes:

GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>)

Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs

Egy sorozat elemeit egy megadott kulcsválasztó függvény szerint csoportosítja, és egy megadott összehasonlító használatával összehasonlítja a kulcsokat.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<System::Linq::IGrouping<TKey, TSource> ^> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Source>>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> * System.Collections.Generic.IEqualityComparer<'Key> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Source>>
<Extension()>
Public Function GroupBy(Of TSource, TKey) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey)), comparer As IEqualityComparer(Of TKey)) As IQueryable(Of IGrouping(Of TKey, TSource))

Típusparaméterek

TSource

A . elemeinek sourcetípusa.

TKey

A függvény által visszaadott kulcs típusa.keySelector

Paraméterek

source
IQueryable<TSource>

Egy IQueryable<T> olyan elem, amelynek elemeit csoportosítani kell.

keySelector
Expression<Func<TSource,TKey>>

Az egyes elemek kulcsának kinyerésére szolgáló függvény.

comparer
IEqualityComparer<TKey>

Egy IEqualityComparer<T> a kulcsok összehasonlításához.

Válaszok

IQueryable<IGrouping<TKey,TSource>>

Egy IQueryable<IGrouping<TKey, TSource>> C# vagy IQueryable(Of IGrouping(Of TKey, TSource)) Visual Basic, ahol minden IGrouping<TKey,TElement> objektumsorozatot és kulcsot tartalmaz.

Attribútumok

Kivételek

source vagy keySelectorcomparer az nullis.

Megjegyzések

Ez a metódus legalább egy típusparamétert Expression<TDelegate> használ, amelynek típusargumentuma az Func<T,TResult> egyik típus. Ezekhez a paraméterekhez átadhat egy lambda kifejezést, és az Expression<TDelegate>egy .

A GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) metódus létrehoz egy olyan metódust MethodCallExpression , amely önmagát generált általános metódusként jeleníti GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) meg. Ezután átadja a MethodCallExpression paraméter tulajdonsága által CreateQuery<TElement>(Expression) képviselt metódusnak IQueryProviderProvider.source

A meghívást GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) jelképező kifejezésfa végrehajtása során előforduló lekérdezési viselkedés a paraméter típusának source implementálásától függ. A várt viselkedés az, hogy kulcsértékek szerint csoportosítja source az elemeket. A kulcsértéket az egyes elemekre való keySelector meghívással nyerjük, a kulcsértékeket pedig a rendszer a használatával comparerhasonlítja össze.

A következőre érvényes:

GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>)

Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs
Forrás:
Queryable.cs

A szekvencia elemeit egy megadott kulcsválasztó függvény szerint csoportosítja.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<System::Linq::IGrouping<TKey, TSource> ^> ^ GroupBy(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, TKey> ^> ^ keySelector);
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
public static System.Linq.IQueryable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey>(this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,TKey>> keySelector);
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Source>>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
static member GroupBy : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, 'Key>> -> System.Linq.IQueryable<System.Linq.IGrouping<'Key, 'Source>>
<Extension()>
Public Function GroupBy(Of TSource, TKey) (source As IQueryable(Of TSource), keySelector As Expression(Of Func(Of TSource, TKey))) As IQueryable(Of IGrouping(Of TKey, TSource))

Típusparaméterek

TSource

A . elemeinek sourcetípusa.

TKey

A függvény által visszaadott kulcs típusa.keySelector

Paraméterek

source
IQueryable<TSource>

Egy IQueryable<T> olyan elem, amelynek elemeit csoportosítani kell.

keySelector
Expression<Func<TSource,TKey>>

Az egyes elemek kulcsának kinyerésére szolgáló függvény.

Válaszok

IQueryable<IGrouping<TKey,TSource>>

Egy IQueryable<IGrouping<TKey, TSource>> C# vagy IQueryable(Of IGrouping(Of TKey, TSource)) Visual Basic, ahol minden IGrouping<TKey,TElement> objektum objektumsorozatot és kulcsot tartalmaz.

Attribútumok

Kivételek

source vagy keySelector az null.

Példák

Az alábbi példakód bemutatja, hogyan csoportosíthatja GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) a sorozat elemeit.

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void GroupByEx1()
{
    // Create a list of Pet objects.
    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 Pet.Age as the key.
    // Use Pet.Name as the value for each entry.
    var query = pets.AsQueryable().GroupBy(pet => pet.Age);

    // Iterate over each IGrouping in the collection.
    foreach (var ageGroup in query)
    {
        Console.WriteLine("Age group: {0}  Number of pets: {1}", ageGroup.Key, ageGroup.Count());
    }
}

/*
    This code produces the following output:

    Age group: 8  Number of pets: 1
    Age group: 4  Number of pets: 2
    Age group: 1  Number of pets: 1

*/
Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Shared 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 Pet.Age as the key.
    ' Use Pet.Name as the value for each entry.
    Dim query = pets.AsQueryable().GroupBy(Function(pet) pet.Age)

    Dim output As New System.Text.StringBuilder
    ' Iterate over each IGrouping in the collection.
    For Each ageGroup In query
        output.AppendFormat("Age group: {0}   Number of pets: {1}{2}", ageGroup.Key, ageGroup.Count(), vbCrLf)
    Next

    ' Display the output.
    MsgBox(output.ToString())
End Sub

' This code produces the following output:
'
' Age group: 8   Number of pets: 1
' Age group: 4   Number of pets: 2
' Age group: 1   Number of pets: 1

Megjegyzések

Ez a metódus legalább egy típusparamétert Expression<TDelegate> használ, amelynek típusargumentuma az Func<T,TResult> egyik típus. Ezekhez a paraméterekhez átadhat egy lambda kifejezést, és az Expression<TDelegate>egy .

A GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) metódus létrehoz egy olyan metódust MethodCallExpression , amely önmagát generált általános metódusként jeleníti GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) meg. Ezután átadja a MethodCallExpression paraméter tulajdonsága által CreateQuery<TElement>(Expression) képviselt metódusnak IQueryProviderProvider.source

A meghívást GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) jelképező kifejezésfa végrehajtása során előforduló lekérdezési viselkedés a paraméter típusának source implementálásától függ. A várt viselkedés az, hogy az elemek elemeit source egy kulcsérték szerint csoportosítja, amelyet az egyes elemek invokálásával keySelector szerez be.

A következőre érvényes: