다음을 통해 공유


데이터 그룹화

업데이트: 2007년 11월

그룹화는 각 그룹의 요소가 공통 특성을 공유하도록 데이터를 그룹으로 나누는 작업입니다.

다음 그림에서는 문자의 시퀀스를 그룹화한 결과를 보여 줍니다. 각 그룹의 키는 문자입니다.

LINQ 그룹화 작업

데이터 요소를 그룹화하는 표준 쿼리 연산자 메서드는 다음 단원에 나열되어 있습니다.

메서드

메서드 이름

설명

C# 쿼리 식 구문

Visual Basic 쿼리 식 구문

추가 정보

GroupBy

공통 특성을 공유하는 요소를 그룹화합니다. 각 그룹은 IGrouping<TKey, TElement> 개체로 표시됩니다.

group … by

- 또는 -

group … by … into …

Group … By … Into …

Enumerable.GroupBy

Queryable.GroupBy

ToLookup

키 선택기 함수에 따라 요소를 Lookup<TKey, TElement>(일대다 사전)에 삽입합니다.

적용할 수 없음.

적용할 수 없음.

Enumerable.ToLookup

쿼리 식 구문 예제

다음 코드 예제에서는 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
*/

데이터 그룹화 방법에 대한 추가 정보

참고 항목

개념

표준 쿼리 연산자 개요

참조

group 절(C# 참조)

Group By 절(Visual Basic)

System.Linq