C#에서 여러 개의 리스트를 하나로 합치고 싶을 때 Union() 메서드를 사용하면 됩니다. Union()은 LINQ에서 제공하는 메서드로, 두 컬렉션을 병합하면서 중복되는 요소는 자동으로 제거해 줍니다.
1. 리스트 생성
먼저 세 개의 리스트를 생성합니다.
// 세 개의 리스트 생성
var list1 = new List<int>{3, 4, 5};
var list2 = new List<int>{1, 2, 3, 4, 5};
var list3 = new List<int>{5, 6, 7, 8};2. Union() 메서드로 합집합 구하기
이제 Union() 메서드를 사용하여 list1과 list2의 합집합을 구하고, 그 결과에 다시 list3의 합집합을 적용합니다.
var res1 = list1.Union(list2); var res2 = res1.Union(list3);
이렇게 체인 방식으로 호출하면 세 개의 리스트 모두에 대한 합집합을 얻을 수 있습니다. 중복된 값(예: 3, 4, 5)은 한 번만 포함됩니다.
전체 예제 코드
다음은 위 내용을 모두 포함한 완전한 코드입니다.
using System.Collections.Generic;
using System.Linq;
using System;
public class Demo {
public static void Main() {
// 세 개의 리스트 생성
var list1 = new List<int>{3, 4, 5};
var list2 = new List<int>{1, 2, 3, 4, 5};
var list3 = new List<int>{5, 6, 7, 8};
// 합집합 구하기
var res1 = list1.Union(list2);
var res2 = res1.Union(list3);
foreach(int i in res2) {
Console.WriteLine(i);
}
}
}실행 결과
3 4 5 1 2 6 7 8
정리
Union() 메서드는 System.Linq 네임스페이스에 포함되어 있으므로 반드시 해당 네임스페이스를 선언해야 합니다. 또한 세 개 이상의 리스트를 다룰 때는 위 예제처럼 결과를 연달아 합쳐 나가거나, Aggregate()와 함께 사용하여 더 간결하게 처리할 수도 있습니다. 합집합 연산은 중복 제거가 필요한 데이터 병합 작업에서 매우 유용하게 활용됩니다.