본문 바로가기
C#/Dictionary

[C#] Dictionary로 변환 (ToDictionary)

by 스누누피 2024. 11. 6.

Enumerable 메서드 중 Dictionary로 변환해주는 ToDcitonary에 대해 알아보겠다.

 

.ToDictionary([key가 될 값], [value가 될 값])

각 요소를 돌며 key와 value를 지정해준다.

 

key만 지정해줄 수 도 있고, key와 value를 다 지정해줄 수 도 있다.

key만 지정해주는 경우 value는 순차적으로 들어간다.

 

메서드 예제

  • key만 지정해주는 경우

int 배열을 dictionary로 변경해 주었다.

각 요소를 string으로 변환해 key로 잡았다.

int[] arr = { 1, 2, 3 };

var dic = arr.ToDictionary(i => i.ToString());

foreach(var keyValue in dic)
{
    Console.WriteLine($"{keyValue.Key} : {keyValue.Value}");
}

// 결과
// 1 : 1
// 2 : 2
// 3 : 3

 

  • key와 value 둘다 지정해주는 경우

int 배열을 dictionary로 변경해 주었다.

각 요소를 string으로 변환해 key로 잡고, 각 요소에 3을 곱한 값을 value로 해주었다.

int[] arr = { 1, 2, 3 };

var dic = arr.ToDictionary((i => i.ToString()), (i => i*3));

foreach(var keyValue in dic)
{
    Console.WriteLine($"{keyValue.Key} : {keyValue.Value}");
}

// 결과
// 1 : 3
// 2 : 6
// 3 : 9

 

  • Collection<KeyValuePair<type, type>>에서 Dictionary로 변환하기

Dictionary를 Linq메서드를 사용하면 Collection<KeyValuePair>형태로 반환이된다.

그래서 그런 경우 다시 Dictionary로 변환할때 key와 value를 모두 지정해주면 된다.

 

밑의 예시는 dictionary를 value기준으로 오름차순으로 만들면 (OrderBy) Collection형태로 반환되기 때문에, 다시 dictionary로 바꿔주는 예시이다. 

Dictionary<string, int> dic = new Dictionary<string, int>();
dic.Add("가", 3);
dic.Add("나", 2);
dic.Add("다", 1);

dic = dic.OrderBy(o => o.Value)
         .ToDictionary((item => item.Key), (item => item.Value));

foreach(var keyValue in dic)
{
    Console.WriteLine($"{keyValue.Key} : {keyValue.Value}");
}

// 결과
// 다: 1
// 나: 2
// 가: 3

'C# > Dictionary' 카테고리의 다른 글

[C#] Dictionary 클래스  (2) 2024.09.10