데이터 그룹화
그룹화는 각 그룹의 요소가 공통 특성을 공유하도록 데이터를 그룹으로 나누는 작업입니다.
다음 그림에서는 문자의 시퀀스를 그룹화한 결과를 보여 줍니다. 각 그룹의 키는 문자입니다.
데이터 요소를 그룹화하는 표준 쿼리 연산자 메서드는 다음 단원에 나열되어 있습니다.
메서드
메서드 이름 |
설명 |
C# 쿼리 식 구문 |
Visual Basic 쿼리 식 구문 |
추가 정보 |
---|---|---|---|---|
GroupBy |
공통 특성을 공유하는 요소를 그룹화합니다. 각 그룹은 IGrouping<TKey, TElement> 개체로 표시됩니다. |
group … by 또는 group … by … into … |
Group … By … Into … |
|
ToLookup |
키 선택기 함수에 따라 요소를 Lookup<TKey, TElement>(일대다 사전)에 삽입합니다. |
해당 사항 없음. |
해당 사항 없음. |
쿼리 식 구문 예제
다음 코드 예제에서는 C#의 group by 절 또는 Visual Basic의 Group By 절을 사용하여 목록의 정수를 짝수인지 홀수인지에 따라 그룹화합니다.
Dim numbers As New System.Collections.Generic.List(Of Integer)(
New Integer() {35, 44, 200, 84, 3987, 4, 199, 329, 446, 208})
Dim query = From number In numbers
Group By Remainder = (number Mod 2) Into Group
Dim sb As New System.Text.StringBuilder()
For Each group In query
sb.AppendLine(If(group.Remainder = 0, vbCrLf & "Even numbers:", vbCrLf & "Odd numbers:"))
For Each num In group.Group
sb.AppendLine(num)
Next
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' Odd numbers:
' 35
' 3987
' 199
' 329
' Even numbers:
' 44
' 200
' 84
' 4
' 446
' 208
List<int> numbers = new List<int>() { 35, 44, 200, 84, 3987, 4, 199, 329, 446, 208 };
IEnumerable<IGrouping<int, int>> query = from number in numbers
group number by number % 2;
foreach (var group in query)
{
Console.WriteLine(group.Key == 0 ? "\nEven numbers:" : "\nOdd numbers:");
foreach (int i in group)
Console.WriteLine(i);
}
/* This code produces the following output:
Odd numbers:
35
3987
199
329
Even numbers:
44
200
84
4
446
208
*/
참고 항목
작업
방법: 그룹화 작업에서 하위 쿼리 수행(C# 프로그래밍 가이드)
방법: 그룹을 사용하여 파일을 여러 파일로 분할(LINQ)