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

C#에서 두 개 이상의 리스트 합집합을 구하는 방법

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()와 함께 사용하여 더 간결하게 처리할 수도 있습니다. 합집합 연산은 중복 제거가 필요한 데이터 병합 작업에서 매우 유용하게 활용됩니다.