C#에서 두 개의 Dictionary가 동일한지 비교하려면 먼저 비교할 두 개의 딕셔너리를 생성해야 합니다.
첫 번째 딕셔너리 생성
IDictionary<int, int> d = new Dictionary<int, int>();
d.Add(1, 97);
d.Add(2, 89);
d.Add(3, 77);
d.Add(4, 88);
// 첫 번째 딕셔너리 요소 출력
Console.WriteLine("Dictionary One elements: " + d.Count);두 번째 딕셔너리 생성
IDictionary<int, int> d2 = new Dictionary<int, int>();
d2.Add(1, 97);
d2.Add(2, 89);
d2.Add(3, 77);
d2.Add(4, 88);
// 두 번째 딕셔너리 요소 출력
Console.WriteLine("Dictionary Two elements: " + d2.Count);두 딕셔너리 비교하기
이제 위에서 만든 두 딕셔너리를 비교해 보겠습니다. 비교 로직은 다음과 같습니다.
bool equal = false;
if (d.Count == d2.Count) { // 요소 개수가 같아야 함
equal = true;
foreach (var pair in d) {
int value;
if (d2.TryGetValue(pair.Key, out value)) {
if (value != pair.Value) {
equal = false;
break;
}
} else {
equal = false;
break;
}
}
}비교 로직 설명
위 코드의 비교 과정은 다음 세 단계로 이루어집니다.
1단계: 먼저 두 딕셔너리의 요소 개수(Count)가 같은지 확인합니다. 개수가 다르면 비교할 필요 없이 두 딕셔너리는 서로 다릅니다.
2단계: 개수가 같다면, 첫 번째 딕셔너리의 각 키-값 쌍을 순회하면서 두 번째 딕셔너리에 동일한 키가 존재하는지 TryGetValue로 확인합니다.
3단계: 키가 존재하면 해당 값도 일치하는지 검사하고, 하나라도 불일치하거나 키가 없으면 즉시 반복문을 종료하고 결과를 false로 설정합니다.
실행 결과
위 코드를 실행하면 콘솔에 True가 출력됩니다. 이는 두 딕셔너리가 동일한 키와 값을 가지고 있음을 의미합니다.
만약 두 딕셔너리 중 하나라도 키 또는 값이 다르다면 결과는 False가 됩니다. 이 방법은 LINQ를 사용하지 않고도 간단하고 효율적으로 두 딕셔너리의 동등성을 확인할 수 있는 방법입니다.