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

C#으로 두 리스트의 공통 요소 찾아 출력하기 – Intersect 메서드 활용법

C#에서 두 리스트의 공통 요소 찾기

두 개의 컬렉션에서 서로 겹치는 값을 추출해야 하는 경우가 종종 있습니다. C#에서는 LINQ의 Intersect 메서드를 사용하면 아주 간단하게 처리할 수 있습니다. 이 메서드는 두 시퀀스에 모두 포함된 요소, 즉 수학의 '교집합'에 해당하는 값들을 반환합니다.

1단계: 비교할 두 개의 리스트 생성

먼저 공통 요소를 찾을 두 개의 리스트를 만듭니다.

List<int> list1 = new List<int>() {40, 20, 60, 3, 55};
List<int> list2 = new List<int>() {20, 70, 55, 80};

2단계: Intersect 메서드로 공통 요소 추출

공통 요소를 찾으려면 다음과 같이 Intersect 메서드를 호출합니다.

list1.Intersect(list2)

Intersect는 System.Linq 네임스페이스에 정의된 확장 메서드로, 두 컬렉션의 교집합을 지연 실행(lazy evaluation) 방식으로 반환합니다. 결과에는 중복 요소가 자동으로 제거되며, 첫 번째 시퀀스의 요소 순서가 그대로 유지된다는 점도 기억해 두면 좋습니다.

전체 예제 코드

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

namespace Demo {
    class Program {
        static void Main(string[] args) {
            List<int> list1 = new List<int>() {40, 20, 60, 3, 55};
            List<int> list2 = new List<int>() {20, 70, 55, 80};
            Console.WriteLine("Common elements:");
            foreach(int value in list1.Intersect(list2))
                Console.WriteLine(value);
        }
    }
}

실행 결과

Common elements:
20
55

위 코드를 실행하면 두 리스트에 모두 존재하는 값인 2055만 출력되는 것을 확인할 수 있습니다. 한 가지 주의할 점은 Intersect 메서드를 사용하려면 코드 상단에 반드시 using System.Linq; 구문을 추가해야 한다는 것입니다. 이처럼 LINQ를 활용하면 복잡한 반복문 없이도 컬렉션 간의 집합 연산을 몇 줄의 코드로 깔끔하게 처리할 수 있습니다.