Enumerable.GroupBy 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
시퀀스의 요소를 그룹화합니다.
오버로드
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)
- Source:
- Grouping.cs
- Source:
- Grouping.cs
- Source:
- Grouping.cs
지정된 키 누적기 함수에 따라 시퀀스의 요소를 그룹화하고 각 그룹의 결과 값과 해당 키를 만듭니다. 각 그룹의 요소는 지정된 함수를 통해 투영됩니다.
public:
generic <typename TSource, typename TKey, typename TElement, typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TResult> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector, Func<TKey, System::Collections::Generic::IEnumerable<TElement> ^, TResult> ^ resultSelector);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> * Func<'Key, seq<'Element>, 'Result> -> seq<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement, TResult) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement), resultSelector As Func(Of TKey, IEnumerable(Of TElement), TResult)) As IEnumerable(Of TResult)
형식 매개 변수
- TSource
source
요소의 형식입니다.
- TKey
keySelector
에서 반환하는 키의 형식입니다.
- TElement
각 IGrouping<TKey,TElement>에 있는 요소의 형식입니다.
- TResult
resultSelector
에서 반환하는 결과 값의 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
요소를 그룹화할 IEnumerable<T>입니다.
- keySelector
- Func<TSource,TKey>
각 요소에 대해 키를 추출하는 함수입니다.
- elementSelector
- Func<TSource,TElement>
각 소스 요소를 IGrouping<TKey,TElement>의 요소에 매핑하는 함수입니다.
- resultSelector
- Func<TKey,IEnumerable<TElement>,TResult>
각 그룹의 결과 값을 만드는 함수입니다.
반환
각 요소가 그룹과 해당 키에 대한 프로젝션을 나타내는 TResult
형식의 요소 컬렉션입니다.
예외
source
, keySelector
, elementSelector
또는 resultSelector
가 null
인 경우
예제
다음 코드 예제에서는 를 사용하여 GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>) 시퀀스의 프로젝토리된 요소를 그룹화한 다음 형식의 결과 TResult
시퀀스를 프로젝토리하는 방법을 보여 줍니다.
class Pet
{
public string Name { get; set; }
public double Age { get; set; }
}
public static void GroupByEx4()
{
// Create a list of pets.
List<Pet> petsList =
new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
new Pet { Name="Boots", Age=4.9 },
new Pet { Name="Whiskers", Age=1.5 },
new Pet { Name="Daisy", Age=4.3 } };
// Group Pet.Age values by the Math.Floor of the age.
// Then project an anonymous type from each group
// that consists of the key, the count of the group's
// elements, and the minimum and maximum age in the group.
var query = petsList.GroupBy(
pet => Math.Floor(pet.Age),
pet => pet.Age,
(baseAge, ages) => new
{
Key = baseAge,
Count = ages.Count(),
Min = ages.Min(),
Max = ages.Max()
});
// Iterate over each anonymous type.
foreach (var result in query)
{
Console.WriteLine("\nAge group: " + result.Key);
Console.WriteLine("Number of pets in this age group: " + result.Count);
Console.WriteLine("Minimum age: " + result.Min);
Console.WriteLine("Maximum age: " + result.Max);
}
/* This code produces the following output:
Age group: 8
Number of pets in this age group: 1
Minimum age: 8.3
Maximum age: 8.3
Age group: 4
Number of pets in this age group: 2
Minimum age: 4.3
Maximum age: 4.9
Age group: 1
Number of pets in this age group: 1
Minimum age: 1.5
Maximum age: 1.5
*/
}
Structure Pet
Public Name As String
Public Age As Double
End Structure
Public Sub GroupByEx4()
' Create a list of pets.
Dim petsList As New List(Of Pet)(New Pet() _
{New Pet With {.Name = "Barley", .Age = 8.3},
New Pet With {.Name = "Boots", .Age = 4.9},
New Pet With {.Name = "Whiskers", .Age = 1.5},
New Pet With {.Name = "Daisy", .Age = 4.3}})
' Group Pet.Age values by the Math.Floor of the age.
' Then project an anonymous type from each group
' that consists of the key, the count of the group's
' elements, and the minimum and maximum age in the group.
Dim query = petsList.GroupBy(
Function(pet) Math.Floor(pet.Age),
Function(pet) pet.Age,
Function(baseAge, ages) New With
{.Key = baseAge,
.Count = ages.Count(),
.Min = ages.Min(),
.Max = ages.Max()}
)
Dim output As New System.Text.StringBuilder
' Iterate over each anonymous type.
For Each result In query
output.AppendLine(vbCrLf & "Age group: " & result.Key)
output.AppendLine("Number of pets in this age group: " & result.Count)
output.AppendLine("Minimum age: " & result.Min)
output.AppendLine("Maximum age: " & result.Max)
Next
' Display the output.
Console.WriteLine(output.ToString)
End Sub
' This code produces the following output:
' Age group: 8
' Number of pets in this age group: 1
' Minimum age: 8.3
' Maximum age: 8.3
'
' Age group: 4
' Number of pets in this age group: 2
' Minimum age: 4.3
' Maximum age: 4.9
'
' Age group: 1
' Number of pets in this age group: 1
' Minimum age: 1.5
' Maximum age: 1.5
설명
쿼리 식 구문 group by
에서 (C#) 또는 Group By Into
(Visual Basic) 절은 의 GroupBy호출로 변환됩니다.
추가 정보
적용 대상
GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>, TResult>, IEqualityComparer<TKey>)
- Source:
- Grouping.cs
- Source:
- Grouping.cs
- Source:
- Grouping.cs
지정된 키 누적기 함수에 따라 시퀀스의 요소를 그룹화하고 각 그룹의 결과 값과 해당 키를 만듭니다. 키 값은 지정된 비교자를 통해 비교되고 각 그룹의 요소는 지정된 함수를 통해 투영됩니다.
public:
generic <typename TSource, typename TKey, typename TElement, typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TResult> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector, Func<TKey, System::Collections::Generic::IEnumerable<TElement> ^, TResult> ^ resultSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TElement,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, Func<TKey,System.Collections.Generic.IEnumerable<TElement>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> * Func<'Key, seq<'Element>, 'Result> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement, TResult) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement), resultSelector As Func(Of TKey, IEnumerable(Of TElement), TResult), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of TResult)
형식 매개 변수
- TSource
source
요소의 형식입니다.
- TKey
keySelector
에서 반환하는 키의 형식입니다.
- TElement
각 IGrouping<TKey,TElement>에 있는 요소의 형식입니다.
- TResult
resultSelector
에서 반환하는 결과 값의 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
요소를 그룹화할 IEnumerable<T>입니다.
- keySelector
- Func<TSource,TKey>
각 요소에 대해 키를 추출하는 함수입니다.
- elementSelector
- Func<TSource,TElement>
각 소스 요소를 IGrouping<TKey,TElement>의 요소에 매핑하는 함수입니다.
- resultSelector
- Func<TKey,IEnumerable<TElement>,TResult>
각 그룹의 결과 값을 만드는 함수입니다.
- comparer
- IEqualityComparer<TKey>
키를 비교할 IEqualityComparer<T>입니다.
반환
각 요소가 그룹과 해당 키에 대한 프로젝션을 나타내는 TResult
형식의 요소 컬렉션입니다.
예외
source
, keySelector
, elementSelector
또는 resultSelector
가 null
인 경우
추가 정보
적용 대상
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)
- Source:
- Grouping.cs
- Source:
- Grouping.cs
- Source:
- Grouping.cs
지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화하고 지정된 함수를 사용하여 각 그룹의 요소를 투영합니다.
public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TElement> ^> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> -> seq<System.Linq.IGrouping<'Key, 'Element>>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement)) As IEnumerable(Of IGrouping(Of TKey, TElement))
형식 매개 변수
- TSource
source
요소의 형식입니다.
- TKey
keySelector
에서 반환하는 키의 형식입니다.
- TElement
IGrouping<TKey,TElement> 요소의 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
요소를 그룹화할 IEnumerable<T>입니다.
- keySelector
- Func<TSource,TKey>
각 요소에 대해 키를 추출하는 함수입니다.
- elementSelector
- Func<TSource,TElement>
각 소스 요소를 IGrouping<TKey,TElement>의 요소에 매핑하는 함수입니다.
반환
IEnumerable<IGrouping<TKey, TElement>>
C# 또는 IEnumerable(Of IGrouping(Of TKey, TElement))
Visual Basic의 입니다. 여기서 각 IGrouping<TKey,TElement> 개체에는 형식 TElement
및 키의 개체 컬렉션이 포함됩니다.
예외
source
, keySelector
또는 elementSelector
가 null
인 경우
예제
다음 코드 예제에서는 를 사용하여 GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) 시퀀스의 요소를 그룹화하는 방법을 보여 줍니다.
class Pet
{
public string Name { get; set; }
public int Age { get; set; }
}
// Uses method-based query syntax.
public static void GroupByEx1()
{
// Create a list of pets.
List<Pet> pets =
new List<Pet>{ new Pet { Name="Barley", Age=8 },
new Pet { Name="Boots", Age=4 },
new Pet { Name="Whiskers", Age=1 },
new Pet { Name="Daisy", Age=4 } };
// Group the pets using Age as the key value
// and selecting only the pet's Name for each value.
IEnumerable<IGrouping<int, string>> query =
pets.GroupBy(pet => pet.Age, pet => pet.Name);
// Iterate over each IGrouping in the collection.
foreach (IGrouping<int, string> petGroup in query)
{
// Print the key value of the IGrouping.
Console.WriteLine(petGroup.Key);
// Iterate over each value in the
// IGrouping and print the value.
foreach (string name in petGroup)
Console.WriteLine(" {0}", name);
}
}
/*
This code produces the following output:
8
Barley
4
Boots
Daisy
1
Whiskers
*/
Structure Pet
Public Name As String
Public Age As Integer
End Structure
Sub GroupByEx1()
'Create a list of Pet objects.
Dim pets As New List(Of Pet)(New Pet() _
{New Pet With {.Name = "Barley", .Age = 8},
New Pet With {.Name = "Boots", .Age = 4},
New Pet With {.Name = "Whiskers", .Age = 1},
New Pet With {.Name = "Daisy", .Age = 4}})
' Group the pets using Age as the key
' and selecting only the pet's Name for each value.
Dim query As IEnumerable(Of IGrouping(Of Integer, String)) =
pets.GroupBy(Function(pet) pet.Age,
Function(pet) pet.Name)
Dim output As New System.Text.StringBuilder
' Iterate over each IGrouping in the collection.
For Each petGroup As IGrouping(Of Integer, String) In query
' Print the key value of the IGrouping.
output.AppendLine(petGroup.Key)
' Iterate over each value in the IGrouping and print the value.
For Each name As String In petGroup
output.AppendLine(" " & name)
Next
Next
' Display the output.
Console.WriteLine(output.ToString)
End Sub
' This code produces the following output:
'
' 8
' Barley
' 4
' Boots
' Daisy
' 1
' Whiskers
쿼리 식 구문 group by
에서 (C#) 또는 Group By Into
(Visual Basic) 절은 의 GroupBy호출로 변환됩니다. 다음 예제에서 쿼리 식의 변환은 위 예제의 쿼리와 동일합니다.
IEnumerable<IGrouping<int, string>> query =
from pet in pets
group pet.Name by pet.Age;
Dim query =
From pet In pets
Group pet.Name By Age = pet.Age Into ageGroup = Group
참고
C# 또는 Visual Basic 쿼리 식에서 요소 및 키 선택 식은 메서드 호출에서 인수 위치의 역순으로 GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) 발생합니다.
설명
이 메서드는 지연 된 실행을 사용 하 여 구현 됩니다. 즉시 반환 값은 작업을 수행 하는 데 필요한 모든 정보를 저장 하는 개체입니다. 이 메서드가 나타내는 쿼리는 개체를 직접 호출 GetEnumerator
하거나 C# 또는 For Each
Visual Basic에서 를 사용하여 foreach
개체를 열거할 때까지 실행되지 않습니다.
메서드는 GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>) 발생한 각 고유 키에 대해 하나씩 개체 컬렉션을 IGrouping<TKey,TElement> 반환합니다. 는 IGrouping<TKey,TElement>IEnumerable<T> 요소와 연결된 키도 있는 입니다.
개체는 IGrouping<TKey,TElement> 각 IGrouping<TKey,TElement>의 첫 번째 키를 생성한 의 요소 source
순서에 따라 순서대로 생성됩니다. 그룹화의 요소는 생성한 요소가 에 표시되는 source
순서대로 생성됩니다.
기본 같음 비교자는 Default 키를 비교하는 데 사용됩니다.
추가 정보
적용 대상
GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>)
- Source:
- Grouping.cs
- Source:
- Grouping.cs
- Source:
- Grouping.cs
키 선택기 함수에 따라 시퀀스의 요소를 그룹화합니다. 키는 비교자를 통해 비교되고 각 그룹의 요소는 지정된 함수를 통해 투영됩니다.
public:
generic <typename TSource, typename TKey, typename TElement>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TElement> ^> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TSource, TElement> ^ elementSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TElement>> GroupBy<TSource,TKey,TElement> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TSource,TElement> elementSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Source, 'Element> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<System.Linq.IGrouping<'Key, 'Element>>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TElement) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), elementSelector As Func(Of TSource, TElement), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of IGrouping(Of TKey, TElement))
형식 매개 변수
- TSource
source
요소의 형식입니다.
- TKey
keySelector
에서 반환하는 키의 형식입니다.
- TElement
IGrouping<TKey,TElement> 요소의 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
요소를 그룹화할 IEnumerable<T>입니다.
- keySelector
- Func<TSource,TKey>
각 요소에 대해 키를 추출하는 함수입니다.
- elementSelector
- Func<TSource,TElement>
각 소스 요소를 IGrouping<TKey,TElement>의 요소에 매핑하는 함수입니다.
- comparer
- IEqualityComparer<TKey>
키를 비교할 IEqualityComparer<T>입니다.
반환
IEnumerable<IGrouping<TKey, TElement>>
C# 또는 IEnumerable(Of IGrouping(Of TKey, TElement))
Visual Basic의 입니다. 여기서 각 IGrouping<TKey,TElement> 개체에는 형식 TElement
및 키의 개체 컬렉션이 포함됩니다.
예외
source
, keySelector
또는 elementSelector
가 null
인 경우
설명
이 메서드는 지연 된 실행을 사용 하 여 구현 됩니다. 즉시 반환 값은 작업을 수행 하는 데 필요한 모든 정보를 저장 하는 개체입니다. 이 메서드가 나타내는 쿼리는 개체를 직접 호출 GetEnumerator
하거나 C# 또는 For Each
Visual Basic에서 를 사용하여 foreach
개체를 열거할 때까지 실행되지 않습니다.
참고
의 GroupBy
예제는 다음 문서를 참조하세요.
- GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)
- GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)
- GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)
메서드는 GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, IEqualityComparer<TKey>) 발생한 각 고유 키에 대해 하나씩 개체 컬렉션을 IGrouping<TKey,TElement> 반환합니다. 는 IGrouping<TKey,TElement>IEnumerable<T> 요소와 연결된 키도 있는 입니다.
개체는 IGrouping<TKey,TElement> 각 IGrouping<TKey,TElement>의 첫 번째 키를 생성한 의 요소 source
순서에 따라 순서대로 생성됩니다. 그룹화의 요소는 생성한 요소가 에 표시되는 source
순서대로 생성됩니다.
가 이null
면 comparer
기본 같음 비교자를 Default 사용하여 키를 비교합니다.
두 키가 에 따라 comparer
같음으로 간주되는 경우 첫 번째 키가 해당 그룹화의 키로 선택됩니다.
쿼리 식 구문 group by
에서 (C#) 또는 Group By Into
(Visual Basic) 절은 의 GroupBy호출로 변환됩니다. 자세한 내용 및 사용 예제는 group 절 및 Group By 절을 참조하세요.
추가 정보
적용 대상
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)
- Source:
- Grouping.cs
- Source:
- Grouping.cs
- Source:
- Grouping.cs
지정된 키 누적기 함수에 따라 시퀀스의 요소를 그룹화하고 각 그룹의 결과 값과 해당 키를 만듭니다.
public:
generic <typename TSource, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TResult> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TKey, System::Collections::Generic::IEnumerable<TSource> ^, TResult> ^ resultSelector);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Key, seq<'Source>, 'Result> -> seq<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TResult) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), resultSelector As Func(Of TKey, IEnumerable(Of TSource), TResult)) As IEnumerable(Of TResult)
형식 매개 변수
- TSource
source
요소의 형식입니다.
- TKey
keySelector
에서 반환하는 키의 형식입니다.
- TResult
resultSelector
에서 반환하는 결과 값의 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
요소를 그룹화할 IEnumerable<T>입니다.
- keySelector
- Func<TSource,TKey>
각 요소에 대해 키를 추출하는 함수입니다.
- resultSelector
- Func<TKey,IEnumerable<TSource>,TResult>
각 그룹의 결과 값을 만드는 함수입니다.
반환
각 요소가 그룹과 해당 키에 대한 프로젝션을 나타내는 TResult
형식의 요소 컬렉션입니다.
예외
source
, keySelector
또는 resultSelector
가 null
인 경우
예제
다음 코드 예제에서는 를 사용하여 GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>) 시퀀스의 요소를 그룹화하고 형식 TResult
의 결과 시퀀스를 프로젝토리하는 방법을 보여 줍니다.
class Pet
{
public string Name { get; set; }
public double Age { get; set; }
}
public static void GroupByEx3()
{
// Create a list of pets.
List<Pet> petsList =
new List<Pet>{ new Pet { Name="Barley", Age=8.3 },
new Pet { Name="Boots", Age=4.9 },
new Pet { Name="Whiskers", Age=1.5 },
new Pet { Name="Daisy", Age=4.3 } };
// Group Pet objects by the Math.Floor of their age.
// Then project an anonymous type from each group
// that consists of the key, the count of the group's
// elements, and the minimum and maximum age in the group.
var query = petsList.GroupBy(
pet => Math.Floor(pet.Age),
(age, pets) => new
{
Key = age,
Count = pets.Count(),
Min = pets.Min(pet => pet.Age),
Max = pets.Max(pet => pet.Age)
});
// Iterate over each anonymous type.
foreach (var result in query)
{
Console.WriteLine("\nAge group: " + result.Key);
Console.WriteLine("Number of pets in this age group: " + result.Count);
Console.WriteLine("Minimum age: " + result.Min);
Console.WriteLine("Maximum age: " + result.Max);
}
/* This code produces the following output:
Age group: 8
Number of pets in this age group: 1
Minimum age: 8.3
Maximum age: 8.3
Age group: 4
Number of pets in this age group: 2
Minimum age: 4.3
Maximum age: 4.9
Age group: 1
Number of pets in this age group: 1
Minimum age: 1.5
Maximum age: 1.5
*/
}
Structure Pet
Public Name As String
Public Age As Double
End Structure
Public Sub GroupByEx3()
' Create a list of pets.
Dim petsList As New List(Of Pet)(New Pet() _
{New Pet With {.Name = "Barley", .Age = 8.3},
New Pet With {.Name = "Boots", .Age = 4.9},
New Pet With {.Name = "Whiskers", .Age = 1.5},
New Pet With {.Name = "Daisy", .Age = 4.3}})
' Group Pet objects by the Math.Floor of their age.
' Then project an anonymous type from each group
' that consists of the key, the count of the group's
' elements, and the minimum and maximum age in the group.
Dim query = petsList.GroupBy(
Function(pet) Math.Floor(pet.Age),
Function(age, pets) New With
{.Key = age,
.Count = pets.Count(),
.Min = pets.Min(Function(pet) pet.Age),
.Max = pets.Max(Function(Pet) Pet.Age)}
)
Dim output As New System.Text.StringBuilder
' Iterate over each anonymous type.
For Each result In query
output.AppendLine(vbCrLf & "Age group: " & result.Key)
output.AppendLine("Number of pets in this age group: " & result.Count)
output.AppendLine("Minimum age: " & result.Min)
output.AppendLine("Maximum age: " & result.Max)
Next
' Display the output.
Console.WriteLine(output.ToString)
End Sub
' This code produces the following output:
' Age group: 8
' Number of pets in this age group: 1
' Minimum age: 8.3
' Maximum age: 8.3
'
' Age group: 4
' Number of pets in this age group: 2
' Minimum age: 4.3
' Maximum age: 4.9
'
' Age group: 1
' Number of pets in this age group: 1
' Minimum age: 1.5
' Maximum age: 1.5
설명
쿼리 식 구문 group by
에서 (C#) 또는 Group By Into
(Visual Basic) 절은 의 GroupBy호출로 변환됩니다.
추가 정보
적용 대상
GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>, IEqualityComparer<TKey>)
- Source:
- Grouping.cs
- Source:
- Grouping.cs
- Source:
- Grouping.cs
지정된 키 누적기 함수에 따라 시퀀스의 요소를 그룹화하고 각 그룹의 결과 값과 해당 키를 만듭니다. 키는 지정된 비교자를 통해 비교됩니다.
public:
generic <typename TSource, typename TKey, typename TResult>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TResult> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, Func<TKey, System::Collections::Generic::IEnumerable<TSource> ^, TResult> ^ resultSelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Collections.Generic.IEnumerable<TResult> GroupBy<TSource,TKey,TResult> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, Func<TKey,System.Collections.Generic.IEnumerable<TSource>,TResult> resultSelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * Func<'Key, seq<'Source>, 'Result> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<'Result>
<Extension()>
Public Function GroupBy(Of TSource, TKey, TResult) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), resultSelector As Func(Of TKey, IEnumerable(Of TSource), TResult), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of TResult)
형식 매개 변수
- TSource
source
요소의 형식입니다.
- TKey
keySelector
에서 반환하는 키의 형식입니다.
- TResult
resultSelector
에서 반환하는 결과 값의 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
요소를 그룹화할 IEnumerable<T>입니다.
- keySelector
- Func<TSource,TKey>
각 요소에 대해 키를 추출하는 함수입니다.
- resultSelector
- Func<TKey,IEnumerable<TSource>,TResult>
각 그룹의 결과 값을 만드는 함수입니다.
- comparer
- IEqualityComparer<TKey>
키를 비교할 IEqualityComparer<T>입니다.
반환
각 요소가 그룹과 해당 키에 대한 프로젝션을 나타내는 TResult
형식의 요소 컬렉션입니다.
예외
source
, keySelector
또는 resultSelector
가 null
인 경우
추가 정보
적용 대상
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)
- Source:
- Grouping.cs
- Source:
- Grouping.cs
- Source:
- Grouping.cs
지정된 키 선택기 함수에 따라 시퀀스의 요소를 그룹화합니다.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TSource> ^> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> -> seq<System.Linq.IGrouping<'Key, 'Source>>
<Extension()>
Public Function GroupBy(Of TSource, TKey) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey)) As IEnumerable(Of IGrouping(Of TKey, TSource))
형식 매개 변수
- TSource
source
요소의 형식입니다.
- TKey
keySelector
에서 반환하는 키의 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
요소를 그룹화할 IEnumerable<T>입니다.
- keySelector
- Func<TSource,TKey>
각 요소에 대해 키를 추출하는 함수입니다.
반환
IEnumerable<IGrouping<TKey, TSource>>
C# 또는 IEnumerable(Of IGrouping(Of TKey, TSource))
Visual Basic의 입니다. 여기서 각 IGrouping<TKey,TElement> 개체에는 개체와 키 시퀀스가 포함됩니다.
예외
source
또는 keySelector
가 null
인 경우
설명
이 메서드는 지연 된 실행을 사용 하 여 구현 됩니다. 즉시 반환 값은 작업을 수행 하는 데 필요한 모든 정보를 저장 하는 개체입니다. 이 메서드가 나타내는 쿼리는 개체를 직접 호출 GetEnumerator
하거나 C# 또는 For Each
Visual Basic에서 를 사용하여 foreach
개체를 열거할 때까지 실행되지 않습니다.
참고
의 GroupBy
예제는 다음 문서를 참조하세요.
- GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)
- GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)
- GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)
메서드는 GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) 발생한 각 고유 키에 대해 하나씩 개체 컬렉션을 IGrouping<TKey,TElement> 반환합니다. 는 IGrouping<TKey,TElement>IEnumerable<T> 요소와 연결된 키도 있는 입니다.
개체는 IGrouping<TKey,TElement> 각 IGrouping<TKey,TElement>의 첫 번째 키를 생성한 의 요소 source
순서에 따라 순서대로 생성됩니다. 그룹화의 요소는 에 표시되는 source
순서대로 생성됩니다.
기본 같음 비교자는 Default 키를 비교하는 데 사용됩니다.
쿼리 식 구문 group by
에서 (C#) 또는 Group By Into
(Visual Basic) 절은 의 GroupBy호출로 변환됩니다. 자세한 내용 및 사용 예제는 group 절 및 Group By 절을 참조하세요.
추가 정보
적용 대상
GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>)
- Source:
- Grouping.cs
- Source:
- Grouping.cs
- Source:
- Grouping.cs
지정된 키 선택기 함수에 따라 지정된 비교자로 키를 비교하여 시퀀스의 요소를 그룹화합니다.
public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<System::Linq::IGrouping<TKey, TSource> ^> ^ GroupBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IEqualityComparer<TKey> ^ comparer);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey> comparer);
public static System.Collections.Generic.IEnumerable<System.Linq.IGrouping<TKey,TSource>> GroupBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IEqualityComparer<TKey>? comparer);
static member GroupBy : seq<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IEqualityComparer<'Key> -> seq<System.Linq.IGrouping<'Key, 'Source>>
<Extension()>
Public Function GroupBy(Of TSource, TKey) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), comparer As IEqualityComparer(Of TKey)) As IEnumerable(Of IGrouping(Of TKey, TSource))
형식 매개 변수
- TSource
source
요소의 형식입니다.
- TKey
keySelector
에서 반환하는 키의 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
요소를 그룹화할 IEnumerable<T>입니다.
- keySelector
- Func<TSource,TKey>
각 요소에 대해 키를 추출하는 함수입니다.
- comparer
- IEqualityComparer<TKey>
키를 비교할 IEqualityComparer<T>입니다.
반환
IEnumerable<IGrouping<TKey, TSource>>
C# 또는 IEnumerable(Of IGrouping(Of TKey, TSource))
Visual Basic의 입니다. 여기서 각 IGrouping<TKey,TElement> 개체에는 개체 및 키 컬렉션이 포함됩니다.
예외
source
또는 keySelector
가 null
인 경우
설명
이 메서드는 지연 된 실행을 사용 하 여 구현 됩니다. 즉시 반환 값은 작업을 수행 하는 데 필요한 모든 정보를 저장 하는 개체입니다. 이 메서드가 나타내는 쿼리는 개체를 직접 호출 GetEnumerator
하거나 C# 또는 For Each
Visual Basic에서 를 사용하여 foreach
개체를 열거할 때까지 실행되지 않습니다.
참고
의 GroupBy
예제는 다음 문서를 참조하세요.
- GroupBy<TSource,TKey,TElement>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>)
- GroupBy<TSource,TKey,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TKey,IEnumerable<TSource>,TResult>)
- GroupBy<TSource,TKey,TElement,TResult>(IEnumerable<TSource>, Func<TSource,TKey>, Func<TSource,TElement>, Func<TKey,IEnumerable<TElement>,TResult>)
메서드는 GroupBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IEqualityComparer<TKey>) 발생한 각 고유 키에 대해 하나씩 개체 컬렉션을 IGrouping<TKey,TElement> 반환합니다. 는 IGrouping<TKey,TElement>IEnumerable<T> 요소와 연결된 키도 있는 입니다.
개체는 IGrouping<TKey,TElement> 각 IGrouping<TKey,TElement>의 첫 번째 키를 생성한 의 요소 source
순서에 따라 순서대로 생성됩니다. 그룹화의 요소는 에 표시되는 source
순서대로 생성됩니다.
가 이null
면 comparer
기본 같음 비교자를 Default 사용하여 키를 비교합니다.
두 키가 에 따라 comparer
같음으로 간주되는 경우 첫 번째 키가 해당 그룹화의 키로 선택됩니다.
쿼리 식 구문 group by
에서 (C#) 또는 Group By Into
(Visual Basic) 절은 의 GroupBy호출로 변환됩니다. 자세한 내용 및 사용 예제는 group 절 및 Group By 절을 참조하세요.
추가 정보
적용 대상
.NET