데이터 그룹화
그룹화는 각 그룹의 요소가 공통 특성을 공유하도록 데이터를 그룹으로 나누는 작업입니다.
다음 그림에서는 문자의 시퀀스를 그룹화한 결과를 보여 줍니다.각 그룹의 키는 문자입니다.
데이터 요소를 그룹화하는 표준 쿼리 연산자 메서드는 다음 단원에 나열되어 있습니다.
메서드
메서드 이름 |
설명 |
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)