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

C# LINQ의 Union, Intersect, Except 집합 연산자 완벽 가이드

C#의 LINQ에서는 컬렉션을 집합처럼 다룰 수 있도록 Union(합집합), Intersect(교집합), Except(차집합) 세 가지 집합 연산자를 제공합니다. 이 연산자들을 활용하면 여러 컬렉션 간의 관계를 손쉽게 처리할 수 있습니다.

Union — 합집합

Union은 두 개 이상의 컬렉션을 하나로 합치되, 중복된 요소는 제거하고 고유한(unique) 요소만 포함하는 결과 컬렉션을 반환합니다.

Intersect — 교집합

Intersect는 두 입력 시퀀스에 모두 공통으로 존재하는 요소들만 반환합니다. 즉, 양쪽 컬렉션에 동시에 있는 값들만 추출됩니다.

Except — 차집합

Except는 첫 번째 입력 시퀀스에는 존재하지만 두 번째 입력 시퀀스에는 없는 요소들만 반환합니다. 즉, 첫 번째 컬렉션에서 두 번째 컬렉션의 요소들을 제외한 결과입니다.

예제 코드

아래 예제에서는 두 개의 정수 배열을 대상으로 세 가지 연산자를 모두 사용해 보고 그 결과를 확인합니다.

class Program{
    static void Main(){
        int[] count1 = { 1, 2, 3, 4 };
        int[] count2 = { 2, 4, 7 };

        var resultUnion = count1.Union(count2);
        var resultIntersect = count1.Intersect(count2);
        var resultExcept = count1.Except(count2);

        System.Console.WriteLine("Union");
        foreach (var item in resultUnion){
            Console.WriteLine(item);
        }

        System.Console.WriteLine("Intersect");
        foreach (var item in resultIntersect){
            Console.WriteLine(item);
        }

        System.Console.WriteLine("Except");
        foreach (var item in resultExcept){
            Console.WriteLine(item);
        }

        Console.ReadKey();
    }
}

실행 결과

Union
1
2
3
4
7
Intersect
2
4
Except
1
3

결과 해석

  • Union: {1, 2, 3, 4}와 {2, 4, 7}을 합친 후 중복인 2와 4가 한 번씩만 출력되어 1, 2, 3, 4, 7이 됩니다.
  • Intersect: 두 배열에 공통으로 있는 2와 4만 반환됩니다.
  • Except: count1에는 있지만 count2에는 없는 1과 3이 반환됩니다.

이처럼 LINQ의 집합 연산자를 사용하면 반복문과 조건문 없이도 간결하고 가독성 높은 코드로 컬렉션 간의 데이터 비교 및 병합 작업을 수행할 수 있습니다.