다음을 통해 공유


Queryable.GroupBy 메서드

정의

시퀀스의 요소를 그룹화합니다.

오버로드

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

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 각 그룹과 해당 키에서 결과 값을 만듭니다. 각 그룹의 요소는 지정된 함수를 사용하여 프로젝션됩니다.

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

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 각 그룹과 해당 키에서 결과 값을 만듭니다. 키는 지정된 비교자를 사용하여 비교되고 각 그룹의 요소는 지정된 함수를 사용하여 프로젝션됩니다.

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

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 지정된 함수를 사용하여 각 그룹에 대한 요소를 투영합니다.

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

시퀀스의 요소를 그룹화하고 지정된 함수를 사용하여 각 그룹의 요소를 투영합니다. 키 값은 지정된 비교자를 사용하여 비교됩니다.

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

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 각 그룹과 해당 키에서 결과 값을 만듭니다. 지정된 비교자를 사용하여 키를 비교합니다.

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

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 각 그룹과 해당 키에서 결과 값을 만듭니다.

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

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 지정된 비교자를 사용하여 키를 비교합니다.

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

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화합니다.

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

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 각 그룹과 해당 키에서 결과 값을 만듭니다. 각 그룹의 요소는 지정된 함수를 사용하여 프로젝션됩니다.

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)

형식 매개 변수

TSource

의 요소 형식입니다 source.

TKey

에 표시된 함수에서 반환되는 키의 형식입니다 keySelector.

TElement

IGrouping<TKey,TElement>요소의 형식입니다.

TResult

에서 반환 resultSelector하는 결과 값의 형식입니다.

매개 변수

source
IQueryable<TSource>

IQueryable<T> 그룹화할 요소입니다.

keySelector
Expression<Func<TSource,TKey>>

각 요소에 대한 키를 추출하는 함수입니다.

elementSelector
Expression<Func<TSource,TElement>>

각 소스 요소를 .의 요소에 매핑하는 함수입니다 IGrouping<TKey,TElement>.

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

각 그룹에서 결과 값을 만드는 함수입니다.

반환

IQueryable<TResult>

T:System.Linq.IQueryable`1 형식 인수 TResult 가 있고 각 요소가 그룹 및 해당 키에 대한 프로젝션을 나타내는 위치입니다.

특성

예외

source 또는 keySelector 또는 elementSelectorresultSelector 입니다 null.

예제

다음 코드 예제에서는 시퀀스의 요소를 그룹화하고 형식TResult의 결과 시퀀스를 프로젝션하는 방법을 GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>) 보여 줍니다.

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

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

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

설명

이 메서드에는 형식 인수가 형식 Expression<TDelegate> 중 하나인 형식의 매개 변수가 Func<T,TResult> 하나 이상 있습니다. 이러한 매개 변수의 경우 람다 식을 전달할 수 있으며 이 식은 .로 컴파일됩니다 Expression<TDelegate>.

메서드는 GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>) 생성된 제네릭 메서드로 자신을 호출 GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>) 하는 것을 나타내는 메서드를 생성 MethodCallExpression 합니다. 그런 다음 매개 변수의 IQueryProvider 속성 source 이 나타내는 메서드에 Provider 전달 MethodCallExpressionCreateQuery<TElement>(Expression) 합니다.

호출 GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>) 을 나타내는 식 트리를 실행한 결과로 발생하는 쿼리 동작은 매개 변수 형식의 source 구현에 따라 달라집니다. 예상되는 동작은 각 요소 source 에 대해 호출하여 얻은 키 값별로 요소를 그룹화한다는 keySelector 것입니다. 매개 변수는 elementSelector 각 그룹의 요소를 프로젝션하는 데 사용되며 resultSelector 매개 변수는 각 그룹과 해당 키에서 결과 값을 가져오는 데 사용됩니다.

적용 대상

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

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 각 그룹과 해당 키에서 결과 값을 만듭니다. 키는 지정된 비교자를 사용하여 비교되고 각 그룹의 요소는 지정된 함수를 사용하여 프로젝션됩니다.

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)

형식 매개 변수

TSource

의 요소 형식입니다 source.

TKey

에 표시된 함수에서 반환되는 키의 형식입니다 keySelector.

TElement

IGrouping<TKey,TElement>요소의 형식입니다.

TResult

에서 반환 resultSelector하는 결과 값의 형식입니다.

매개 변수

source
IQueryable<TSource>

IQueryable<T> 그룹화할 요소입니다.

keySelector
Expression<Func<TSource,TKey>>

각 요소에 대한 키를 추출하는 함수입니다.

elementSelector
Expression<Func<TSource,TElement>>

각 소스 요소를 .의 요소에 매핑하는 함수입니다 IGrouping<TKey,TElement>.

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

각 그룹에서 결과 값을 만드는 함수입니다.

comparer
IEqualityComparer<TKey>

IEqualityComparer<T> 키를 비교할 수 있는 항목입니다.

반환

IQueryable<TResult>

T:System.Linq.IQueryable`1 형식 인수 TResult 가 있고 각 요소가 그룹 및 해당 키에 대한 프로젝션을 나타내는 위치입니다.

특성

예외

source 또는 keySelector 또는 elementSelector 또는 resultSelectorcomparer 입니다 null.

설명

이 메서드에는 형식 인수가 형식 Expression<TDelegate> 중 하나인 형식의 매개 변수가 Func<T,TResult> 하나 이상 있습니다. 이러한 매개 변수의 경우 람다 식을 전달할 수 있으며 이 식은 .로 컴파일됩니다 Expression<TDelegate>.

메서드는 GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) 생성된 제네릭 메서드로 자신을 호출 GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) 하는 것을 나타내는 메서드를 생성 MethodCallExpression 합니다. 그런 다음 매개 변수의 IQueryProvider 속성 source 이 나타내는 메서드에 Provider 전달 MethodCallExpressionCreateQuery<TElement>(Expression) 합니다.

호출 GroupBy<TSource,TKey,TElement,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TSource,TElement>>, Expression<Func<TKey, IEnumerable<TElement>,TResult>>, IEqualityComparer<TKey>) 을 나타내는 식 트리를 실행한 결과로 발생하는 쿼리 동작은 매개 변수 형식의 source 구현에 따라 달라집니다. 예상되는 동작은 각 요소 source 에 대해 호출하여 얻은 키 값별로 요소를 그룹화한다는 keySelector 것입니다. 매개 comparer 변수는 키 값을 비교하는 데 사용됩니다. 매개 변수는 elementSelector 각 그룹의 요소를 프로젝션하는 데 사용되며 resultSelector 매개 변수는 각 그룹과 해당 키에서 결과 값을 가져오는 데 사용됩니다.

적용 대상

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

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 지정된 함수를 사용하여 각 그룹에 대한 요소를 투영합니다.

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

형식 매개 변수

TSource

의 요소 형식입니다 source.

TKey

에 표시된 함수에서 반환되는 키의 형식입니다 keySelector.

TElement

IGrouping<TKey,TElement>요소의 형식입니다.

매개 변수

source
IQueryable<TSource>

IQueryable<T> 그룹화할 요소입니다.

keySelector
Expression<Func<TSource,TKey>>

각 요소에 대한 키를 추출하는 함수입니다.

elementSelector
Expression<Func<TSource,TElement>>

각 소스 요소를 .의 요소에 매핑하는 함수입니다 IGrouping<TKey,TElement>.

반환

IQueryable<IGrouping<TKey,TElement>>

IQueryable<IGrouping<TKey, TElement>> C# 또는 IQueryable(Of IGrouping(Of TKey, TElement)) Visual Basic에서 각각 IGrouping<TKey,TElement> 형식 TElement 및 키의 개체 시퀀스를 포함합니다.

특성

예외

source 또는 keySelectorelementSelector 입니다 null.

예제

다음 코드 예제에서는 시퀀스의 요소를 그룹화 하는 데 사용 GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) 하는 방법을 보여 줍니다.

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

설명

이 메서드에는 형식 인수가 형식 Expression<TDelegate> 중 하나인 형식의 매개 변수가 Func<T,TResult> 하나 이상 있습니다. 이러한 매개 변수의 경우 람다 식을 전달할 수 있으며 이 식은 .로 컴파일됩니다 Expression<TDelegate>.

메서드는 GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) 생성된 제네릭 메서드로 자신을 호출 GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) 하는 것을 나타내는 메서드를 생성 MethodCallExpression 합니다. 그런 다음 매개 변수의 IQueryProvider 속성 source 이 나타내는 메서드에 Provider 전달 MethodCallExpressionCreateQuery<TElement>(Expression) 합니다.

호출 GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>) 을 나타내는 식 트리를 실행한 결과로 발생하는 쿼리 동작은 매개 변수 형식의 source 구현에 따라 달라집니다. 예상되는 동작은 각 요소 source 에 대해 호출하여 가져온 키 값으로 요소를 그룹화한다는 keySelector 것입니다. 각 요소에 대해 호출 elementSelector 하여 결과 요소를 가져옵니다.

적용 대상

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

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

시퀀스의 요소를 그룹화하고 지정된 함수를 사용하여 각 그룹의 요소를 투영합니다. 키 값은 지정된 비교자를 사용하여 비교됩니다.

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

형식 매개 변수

TSource

의 요소 형식입니다 source.

TKey

에 표시된 함수에서 반환되는 키의 형식입니다 keySelector.

TElement

IGrouping<TKey,TElement>요소의 형식입니다.

매개 변수

source
IQueryable<TSource>

IQueryable<T> 그룹화할 요소입니다.

keySelector
Expression<Func<TSource,TKey>>

각 요소에 대한 키를 추출하는 함수입니다.

elementSelector
Expression<Func<TSource,TElement>>

각 소스 요소를 .의 요소에 매핑하는 함수입니다 IGrouping<TKey,TElement>.

comparer
IEqualityComparer<TKey>

IEqualityComparer<T> 키를 비교할 수 있는 항목입니다.

반환

IQueryable<IGrouping<TKey,TElement>>

IQueryable<IGrouping<TKey, TElement>> C# 또는 IQueryable(Of IGrouping(Of TKey, TElement)) Visual Basic에서 각각 IGrouping<TKey,TElement> 형식 TElement 및 키의 개체 시퀀스를 포함합니다.

특성

예외

source 또는 keySelector 또는 elementSelectorcomparer 입니다 null.

설명

이 메서드에는 형식 인수가 형식 Expression<TDelegate> 중 하나인 형식의 매개 변수가 Func<T,TResult> 하나 이상 있습니다. 이러한 매개 변수의 경우 람다 식을 전달할 수 있으며 이 식은 .로 컴파일됩니다 Expression<TDelegate>.

메서드는 GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) 생성된 제네릭 메서드로 자신을 호출 GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) 하는 것을 나타내는 메서드를 생성 MethodCallExpression 합니다. 그런 다음 매개 변수의 IQueryProvider 속성 source 이 나타내는 메서드에 Provider 전달 MethodCallExpressionCreateQuery<TElement>(Expression) 합니다.

호출 GroupBy<TSource,TKey,TElement>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TSource,TElement>>, IEqualityComparer<TKey>) 을 나타내는 식 트리를 실행한 결과로 발생하는 쿼리 동작은 매개 변수 형식의 source 구현에 따라 달라집니다. 예상되는 동작은 각 요소 source 에 대해 호출하여 가져온 키 값으로 요소를 그룹화한다는 keySelector 것입니다. 키 값은 .를 사용하여 comparer비교됩니다. elementSelector 매개 변수는 각 요소에 대해 호출되어 결과 요소를 가져옵니다.

적용 대상

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

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 각 그룹과 해당 키에서 결과 값을 만듭니다. 지정된 비교자를 사용하여 키를 비교합니다.

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)

형식 매개 변수

TSource

의 요소 형식입니다 source.

TKey

에 표시된 함수에서 반환되는 키의 형식입니다 keySelector.

TResult

에서 반환 resultSelector하는 결과 값의 형식입니다.

매개 변수

source
IQueryable<TSource>

IQueryable<T> 그룹화할 요소입니다.

keySelector
Expression<Func<TSource,TKey>>

각 요소에 대한 키를 추출하는 함수입니다.

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

각 그룹에서 결과 값을 만드는 함수입니다.

comparer
IEqualityComparer<TKey>

IEqualityComparer<T> 키를 비교할 수 있는 항목입니다.

반환

IQueryable<TResult>

T:System.Linq.IQueryable`1 형식 인수 TResult 가 있고 각 요소가 그룹 및 해당 키에 대한 프로젝션을 나타내는 위치입니다.

특성

예외

source 또는 keySelector 또는 resultSelectorcomparer 입니다 null.

설명

이 메서드에는 형식 인수가 형식 Expression<TDelegate> 중 하나인 형식의 매개 변수가 Func<T,TResult> 하나 이상 있습니다. 이러한 매개 변수의 경우 람다 식을 전달할 수 있으며 이 식은 .로 컴파일됩니다 Expression<TDelegate>.

메서드는 GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) 생성된 제네릭 메서드로 자신을 호출 GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) 하는 것을 나타내는 메서드를 생성 MethodCallExpression 합니다. 그런 다음 매개 변수의 IQueryProvider 속성 source 이 나타내는 메서드에 Provider 전달 MethodCallExpressionCreateQuery<TElement>(Expression) 합니다.

호출 GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource, TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>, IEqualityComparer<TKey>) 을 나타내는 식 트리를 실행한 결과로 발생하는 쿼리 동작은 매개 변수 형식의 source 구현에 따라 달라집니다. 예상되는 동작은 각 요소 source 에 대해 호출하여 얻은 키 값별로 요소를 그룹화한다는 keySelector 것입니다. 매개 변수는 comparer 키를 비교하는 데 사용되며 resultSelector 매개 변수는 각 그룹과 해당 키에서 결과 값을 가져오는 데 사용됩니다.

적용 대상

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

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 각 그룹과 해당 키에서 결과 값을 만듭니다.

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)

형식 매개 변수

TSource

의 요소 형식입니다 source.

TKey

에 표시된 함수에서 반환되는 키의 형식입니다 keySelector.

TResult

에서 반환 resultSelector하는 결과 값의 형식입니다.

매개 변수

source
IQueryable<TSource>

IQueryable<T> 그룹화할 요소입니다.

keySelector
Expression<Func<TSource,TKey>>

각 요소에 대한 키를 추출하는 함수입니다.

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

각 그룹에서 결과 값을 만드는 함수입니다.

반환

IQueryable<TResult>

T:System.Linq.IQueryable`1 형식 인수 TResult 가 있고 각 요소가 그룹 및 해당 키에 대한 프로젝션을 나타내는 위치입니다.

특성

예외

source 또는 keySelectorresultSelector 입니다 null.

예제

다음 코드 예제에서는 시퀀스의 요소를 그룹화하고 형식TResult의 결과 시퀀스를 프로젝션하는 방법을 GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) 보여 줍니다.

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

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

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

설명

이 메서드에는 형식 인수가 형식 Expression<TDelegate> 중 하나인 형식의 매개 변수가 Func<T,TResult> 하나 이상 있습니다. 이러한 매개 변수의 경우 람다 식을 전달할 수 있으며 이 식은 .로 컴파일됩니다 Expression<TDelegate>.

메서드는 GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) 생성된 제네릭 메서드로 자신을 호출 GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) 하는 것을 나타내는 메서드를 생성 MethodCallExpression 합니다. 그런 다음 매개 변수의 IQueryProvider 속성 source 이 나타내는 메서드에 Provider 전달 MethodCallExpressionCreateQuery<TElement>(Expression) 합니다.

호출 GroupBy<TSource,TKey,TResult>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, Expression<Func<TKey,IEnumerable<TSource>,TResult>>) 을 나타내는 식 트리를 실행한 결과로 발생하는 쿼리 동작은 매개 변수 형식의 source 구현에 따라 달라집니다. 예상되는 동작은 각 요소 source 에 대해 호출하여 가져온 키 값으로 요소를 그룹화한다는 keySelector 것입니다. resultSelector 매개 변수는 각 그룹 및 해당 키에서 결과 값을 가져오는 데 사용됩니다.

적용 대상

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

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 지정된 비교자를 사용하여 키를 비교합니다.

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

형식 매개 변수

TSource

의 요소 형식입니다 source.

TKey

에 표시된 함수에서 반환되는 키의 형식입니다 keySelector.

매개 변수

source
IQueryable<TSource>

IQueryable<T> 그룹화할 요소입니다.

keySelector
Expression<Func<TSource,TKey>>

각 요소에 대한 키를 추출하는 함수입니다.

comparer
IEqualityComparer<TKey>

IEqualityComparer<T> 키를 비교할 수 있는 항목입니다.

반환

IQueryable<IGrouping<TKey,TSource>>

IQueryable<IGrouping<TKey, TSource>> C# 또는 IQueryable(Of IGrouping(Of TKey, TSource)) Visual Basic에서 각각 IGrouping<TKey,TElement> 개체와 키 시퀀스를 포함합니다.

특성

예외

source 또는 keySelectorcomparer 입니다 null.

설명

이 메서드에는 형식 인수가 형식 Expression<TDelegate> 중 하나인 형식의 매개 변수가 Func<T,TResult> 하나 이상 있습니다. 이러한 매개 변수의 경우 람다 식을 전달할 수 있으며 이 식은 .로 컴파일됩니다 Expression<TDelegate>.

메서드는 GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) 생성된 제네릭 메서드로 자신을 호출 GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) 하는 것을 나타내는 메서드를 생성 MethodCallExpression 합니다. 그런 다음 매개 변수의 IQueryProvider 속성 source 이 나타내는 메서드에 Provider 전달 MethodCallExpressionCreateQuery<TElement>(Expression) 합니다.

호출 GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>, IEqualityComparer<TKey>) 을 나타내는 식 트리를 실행한 결과로 발생하는 쿼리 동작은 매개 변수 형식의 source 구현에 따라 달라집니다. 예상되는 동작은 키 값별로 요소를 source 그룹화한다는 것입니다. 키 값은 각 요소에 대해 호출하여 keySelector 가져오고 키 값은 을 사용하여 comparer비교됩니다.

적용 대상

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

Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs
Source:
Queryable.cs

지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화합니다.

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

형식 매개 변수

TSource

의 요소 형식입니다 source.

TKey

에 표시된 함수에서 반환되는 키의 형식입니다 keySelector.

매개 변수

source
IQueryable<TSource>

IQueryable<T> 그룹화할 요소입니다.

keySelector
Expression<Func<TSource,TKey>>

각 요소에 대한 키를 추출하는 함수입니다.

반환

IQueryable<IGrouping<TKey,TSource>>

IQueryable<IGrouping<TKey, TSource>> C# 또는 IQueryable(Of IGrouping(Of TKey, TSource)) Visual Basic에서 각 IGrouping<TKey,TElement> 개체에 개체와 키 시퀀스가 포함됩니다.

특성

예외

source 또는 keySelector .입니다 null.

예제

다음 코드 예제에서는 시퀀스의 요소를 그룹화 하는 데 사용 GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) 하는 방법을 보여 줍니다.

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

설명

이 메서드에는 형식 인수가 형식 Expression<TDelegate> 중 하나인 형식의 매개 변수가 Func<T,TResult> 하나 이상 있습니다. 이러한 매개 변수의 경우 람다 식을 전달할 수 있으며 이 식은 .로 컴파일됩니다 Expression<TDelegate>.

메서드는 GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) 생성된 제네릭 메서드로 자신을 호출 GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) 하는 것을 나타내는 메서드를 생성 MethodCallExpression 합니다. 그런 다음 매개 변수의 IQueryProvider 속성 source 이 나타내는 메서드에 Provider 전달 MethodCallExpressionCreateQuery<TElement>(Expression) 합니다.

호출 GroupBy<TSource,TKey>(IQueryable<TSource>, Expression<Func<TSource,TKey>>) 을 나타내는 식 트리를 실행한 결과로 발생하는 쿼리 동작은 매개 변수 형식의 source 구현에 따라 달라집니다. 예상되는 동작은 각 요소 source 에 대해 호출하여 가져온 키 값으로 요소를 그룹화한다는 keySelector 것입니다.

적용 대상