C#의 Queryable Union 메서드를 사용하면 두 개의 시퀀스(배열)에 대해 합집합 연산을 수행할 수 있습니다. Union 메서드는 두 시퀀스의 모든 요소를 하나로 병합하되, 중복된 값은 한 번만 포함시킵니다.
Union 메서드란?
Union은 System.Linq 네임스페이스에서 제공하는 메서드로, IQueryable 형식의 시퀀스 두 개를 결합합니다. 기본 비교자(Default Comparer)를 기준으로 중복 요소를 자동으로 제거하며, 그 결과는 IEnumerable<T> 형태로 반환됩니다.
예제 데이터 준비
다음과 같이 두 개의 정수형 배열이 있다고 가정해 보겠습니다.
int[] arr1 = { 29, 40, 15, 55, 70, 30, 90 };
int[] arr2 = { 30, 36, 40, 18, 15, 55, 75 };Union 메서드 적용 방법
AsQueryable() 메서드로 배열을 IQueryable 형식으로 변환한 뒤, Union 메서드를 호출하면 간단하게 합집합을 구할 수 있습니다.
arr1.AsQueryable().Union(arr2);
전체 예제 코드
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
public static void Main() {
int[] arr1 = { 29, 40, 15, 55, 70, 30, 90 };
int[] arr2 = { 30, 36, 40, 18, 15, 55, 75 };
IEnumerable<int> res = arr1.AsQueryable().Union(arr2);
foreach (int a in res)
Console.WriteLine("{0} ", a);
}
}
실행 결과
29
40
15
55
70
30
90
36
18
75
결과 분석
출력 결과를 살펴보면 첫 번째 배열(arr1)의 모든 요소가 먼저 출력되고, 이후 두 번째 배열(arr2)에서 중복되지 않은 요소인 36, 18, 75만 뒤에 추가된 것을 확인할 수 있습니다. 반면 30, 40, 15, 55처럼 두 배열에 공통으로 존재하는 값은 한 번만 출력됩니다.
이처럼 Union 메서드를 활용하면 별도의 정렬이나 중복 제거 로직 없이도 두 컬렉션의 고유한 요소들을 손쉽게 통합할 수 있어, 데이터 집계나 필터링 작업에서 매우 유용하게 활용됩니다.