C# ToDictionary 메서드란?
ToDictionary 메서드는 C# LINQ에서 제공하는 확장 메서드로, IEnumerable 컬렉션을 Dictionary(딕셔너리) 형태로 손쉽게 변환할 수 있게 해줍니다. 각 요소에 대해 키(key)와 값(value)을 지정하는 람다 식을 전달하면, 컬렉션이 키-값 쌍으로 구성된 딕셔너리로 변환됩니다.
기본 사용법
먼저 문자열 배열을 하나 생성해 보겠습니다.
string[] str = new string[] {"Car", "Bus", "Bicycle"};이제 ToDictionary 메서드를 사용해 이 컬렉션을 Dictionary로 변환합니다.
str.ToDictionary(item => item, item => true);
여기서 첫 번째 람다 식 item => item은 각 요소 자신을 키로 지정하고, 두 번째 람다 식 item => true는 각 요소의 값을 true로 지정하는 역할을 합니다.
전체 예제 코드
using System;
using System.Collections.Generic;
using System.Linq;
class Demo {
static void Main() {
string[] str = new string[] {"Car", "Bus", "Bicycle"};
// ToDictionary에서 키와 값 지정
var d = str.ToDictionary(item => item, item => true);
foreach (var ele in d) {
Console.WriteLine("{0}, {1}", ele.Key, ele.Value);
}
}
}
실행 결과
Car, True
Bus, True
Bicycle, True
사용 시 주의 사항
ToDictionary 메서드를 활용할 때는 다음 사항을 유의해야 합니다.
- 중복 키 금지: 키 선택자가 동일한 키를 두 개 이상 반환하면
ArgumentException이 발생합니다. - null 키 불가: 키가 null로 평가되면 예외가 발생합니다. 반면 값은 null이 허용됩니다.
- 즉시 실행 방식: ToDictionary는 즉시 실행(immediate execution) 메서드이므로, 호출되는 시점에 실제 변환이 수행됩니다.
이처럼 ToDictionary 메서드를 사용하면 별도의 반복문 없이도 컬렉션을 깔끔하게 딕셔너리로 변환할 수 있어 코드의 가독성과 생산성을 크게 높일 수 있습니다.