Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 Dictionary를 값(Value) 기준으로 정렬하는 방법

C#에서 Dictionary(딕셔너리)는 키(Key)와 값(Value)의 쌍으로 데이터를 저장하는 대표적인 컬렉션입니다. 그런데 실무에서는 저장된 데이터를 값 기준으로 오름차순 또는 내림차순 정렬해야 하는 경우가 자주 발생합니다.

이번 글에서는 LINQ의 orderby 절을 활용하여 Dictionary를 값 기준으로 손쉽게 정렬하는 방법을 단계별로 알아보겠습니다.

1단계: Dictionary 생성하기

먼저 문자열 키와 정수 값을 가지는 Dictionary를 생성합니다.

var d = new Dictionary<string, int>(5);

2단계: 키와 값 추가하기

생성한 Dictionary에 Add() 메서드를 사용해 키와 값 쌍을 추가합니다.

// 키와 값 추가
d.Add("car", 25);
d.Add("bus", 28);
d.Add("motorbike", 17);

3단계: orderby로 값 기준 정렬하기

LINQ 쿼리 구문의 orderby 절을 사용하면 값(Value)을 기준으로 정렬할 수 있습니다.

var val = from ele in d
          orderby ele.Value ascending
          select ele;

위 코드에서 ascending은 오름차순 정렬을 의미합니다. 만약 내림차순으로 정렬하고 싶다면 descending으로 변경하면 됩니다.

// 내림차순 정렬 예시
var valDesc = from ele in d
              orderby ele.Value descending
              select ele;

4단계: 정렬된 결과 출력하기

foreach 반복문과 KeyValuePair를 사용하여 정렬된 결과를 화면에 출력합니다.

foreach (KeyValuePair<string, int> ele in val) {
    Console.WriteLine("{0} = {1}", ele.Key, ele.Value);
}

전체 예제 코드

지금까지의 과정을 하나의 완성된 프로그램으로 정리하면 다음과 같습니다.

using System;
using System.Collections.Generic;
using System.Linq;

class Program {
    static void Main() {
        var d = new Dictionary<string, int>(5);

        // 키와 값 추가
        d.Add("car", 25);
        d.Add("bus", 28);
        d.Add("motorbike", 17);

        // 값 기준 오름차순 정렬
        var val = from ele in d
                  orderby ele.Value ascending
                  select ele;

        // 결과 출력
        foreach (KeyValuePair<string, int> ele in val) {
            Console.WriteLine("{0} = {1}", ele.Key, ele.Value);
        }
    }
}

실행 결과

motorbike = 17
car = 25
bus = 28

마무리

C#에서 Dictionary를 값 기준으로 정렬하는 것은 LINQ의 orderby 절만 있으면 매우 간단합니다. ascendingdescending 키워드를 활용하면 원하는 방향으로 자유롭게 정렬할 수 있으며, 필요에 따라 ele.Key를 사용해 키 기준 정렬도 가능합니다. 이 방법은 랭킹 집계, 통계 처리 등 값의 크기 순서가 중요한 다양한 상황에서 유용하게 활용될 수 있습니다.