Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Union 메서드 활용법: 두 리스트에서 고유 요소 추출하기

C#의 Union 메서드는 LINQ에서 제공하는 집합 연산자 중 하나로, 두 개의 시퀀스(리스트)를 병합하면서 중복된 요소를 제거하고 고유한(unique) 요소만 반환합니다. 이 메서드는 수학의 합집합 개념과 동일하게 작동합니다.

Union 메서드의 기본 개념

Union 메서드는 기본 비교자(Default Equality Comparer)를 사용하여 요소를 비교하며, 두 리스트에 공통으로 존재하는 중복 값은 한 번만 결과에 포함됩니다.

먼저 예제에 사용할 두 개의 리스트를 선언해 보겠습니다.

var list1 = new List<int>{12, 65, 88, 45};
var list2 = new List<int>{40, 34, 65};

위 두 리스트에는 숫자 65가 양쪽 모두에 포함되어 있습니다. Union 메서드를 적용하면 이 중복 값은 하나로 합쳐집니다.

이제 두 리스트의 합집합을 구해 보겠습니다.

var res = list1.Union(list2);

전체 예제 코드

다음은 Union 메서드를 실제로 사용하는 완전한 C# 프로그램입니다.

using System.Collections.Generic;
using System.Linq;
using System;

public class Demo {
    public static void Main() {

        // 두 개의 리스트 생성
        var list1 = new List<int>{12, 65, 88, 45};
        var list2 = new List<int>{40, 34, 65};

        // 합집합 구하기
        var res = list1.Union(list2);

        foreach(int i in res) {
            Console.WriteLine(i);
        }
    }
}

실행 결과

12
65
88
45
40
34

결과 분석

출력 결과를 보면 첫 번째 리스트의 요소(12, 65, 88, 45)가 먼저 출력되고, 이어서 두 번째 리스트의 고유한 요소(40, 34)가 추가됩니다. 두 리스트에 모두 있던 65는 단 한 번만 출력되었는데, 이것이 바로 Union 메서드의 중복 제거 기능입니다.

참고 사항

  • Union 메서드를 사용하려면 System.Linq 네임스페이스를 참조해야 합니다.
  • 지연 실행(Lazy Evaluation) 방식으로 작동하므로, foreach 루프 등으로 열거할 때 실제 연산이 수행됩니다.
  • 사용자 정의 클래스 객체를 다룰 때는 IEqualityComparer<T>를 매개변수로 전달하여 사용자 지정 비교 로직을 적용할 수 있습니다.
  • 중복을 허용하고 단순히 두 리스트를 연결하고 싶다면 Concat 메서드를 대신 사용하세요.