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

C#에서 KeyValuePair 컬렉션 정렬하는 방법

C#에서 KeyValuePair 컬렉션을 정렬하려면 Sort 메서드를 사용하면 됩니다. 람다 식과 함께 CompareTo() 메서드를 조합하면 Key 또는 Value를 기준으로 원하는 순서(오름차순/내림차순)대로 간단하게 정렬할 수 있습니다.

1. 컬렉션 생성 및 요소 추가

먼저 KeyValuePair 요소를 담을 List 컬렉션을 만들고 데이터를 추가합니다.

var myList = new List<KeyValuePair<int, int>>();

// 요소 추가
myList.Add(new KeyValuePair<int, int>(1, 20));
myList.Add(new KeyValuePair<int, int>(2, 15));
myList.Add(new KeyValuePair<int, int>(3, 35));
myList.Add(new KeyValuePair<int, int>(4, 50));
myList.Add(new KeyValuePair<int, int>(5, 25));

2. Sort() 메서드로 정렬하기

정렬을 수행하려면 Sort() 메서드를 호출합니다. 아래 코드에서는 CompareTo() 메서드로 Value 값을 비교하여 내림차순으로 정렬하고 있습니다.

myList.Sort((x, y) => (y.Value.CompareTo(x.Value)));

비교 순서에 따라 정렬 방향이 달라집니다. y.Value.CompareTo(x.Value)처럼 작성하면 내림차순이 되고, 반대로 x.Value.CompareTo(y.Value)로 작성하면 오름차순으로 정렬됩니다. Key를 기준으로 정렬하고 싶다면 Value 대신 Key 프로퍼티를 사용하면 됩니다.

전체 예제 코드

using System;
using System.Collections.Generic;
class Program {
   static void Main() {
      var myList = new List<KeyValuePair<int, int>>();
      // 요소 추가
      myList.Add(new KeyValuePair<int, int>(1, 20));
      myList.Add(new KeyValuePair<int, int>(2, 15));
      myList.Add(new KeyValuePair<int, int>(3, 35));
      myList.Add(new KeyValuePair<int, int>(4, 50));
      myList.Add(new KeyValuePair<int, int>(5, 25));
      Console.WriteLine("정렬되지 않은 목록...");
      foreach (var val in myList) {
         Console.WriteLine(val);
      }
      // Value 기준 정렬
      myList.Sort((x, y) => (y.Value.CompareTo(x.Value)));
      Console.WriteLine("정렬된 목록...");
      foreach (var val in myList) {
         Console.WriteLine(val);
      }
   }
}

실행 결과

정렬되지 않은 목록...
[1, 20]
[2, 15]
[3, 35]
[4, 50]
[5, 25]
정렬된 목록...
[4, 50]
[3, 35]
[5, 25]
[1, 20]
[2, 15]

실행 결과를 보면 Value 값(50, 35, 25, 20, 15)을 기준으로 내림차순 정렬된 것을 확인할 수 있습니다. 이처럼 Sort() 메서드와 람다 식만 활용하면 별도의 복잡한 구현 없이도 KeyValuePair 컬렉션을 원하는 기준으로 쉽게 정렬할 수 있습니다.