Programming/c#

Dictionary 정렬

Lo Doc 2021. 5. 9. 23:35

Dictionary<string, int> dic = new Dictionary<string, int>();

 

SortedDictionary를 사용하여 정렬할 수 있다.

 

SortedDictionary sorted_dic = new SortedDictionary(dic);

 

오름차순 정렬

foreach (KeyValuePair data in sorted_dic)
{
     Console.WriteLine("문자열 : " + data.Key + ", 수치 : " + data.Value);
}

 

 

using System.Linq;

내림차순 정렬

foreach (KeyValuePair data in sorted_dic.Reverse())
{
     Console.WriteLine("문자열 : " + data.Key + ", 수치 : " + data.Value);
}

 

열심히 정렬해본 결과 Value 기준이 아닌 Key 기준으로 정렬이 된다.

이걸 원한게 아니야 !!

 

 

==============================================

 

그래서 더 쉬운 방법을 찾아버렸다.

Dictionary<string, int> dic = new Dictionary<string, int>();

 

오름차순 정렬

var value_asc_dic = rank_dic.OrderBy(num => num.Value);

 

foreach (var data in value_asc_dic)
{
     Console.WriteLine("문자열 : " + data.Key + ", 수치 : " + data.Value);
}

 

내림차순 정렬

var value_descend_dic = rank_dic.OrderByDescending(num => num.Value);

 

foreach (var data in value_descend_dic)
{
     Console.WriteLine("문자열 : " + data.Key + ", 수치 : " + data.Value);
}