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 |
---|