본문 바로가기

Develop/.NET 가이드

[C#] LINQ 사용방법 - 집합 연산자 Distinct, Union, Intersect, Except

반응형

LINQ
LINQ

집합 연산자 Set Operators

집합 연산자는 두 집합 간에 관계를 활용하는 연산자합니다.

LINQ 메서드 중 Distinct, Union, Intersect, Except 가 집합 연산자에 해당합니다.

집합 내에 중복 요소 제거하기

Distinct 메서드로 factorsOf300 배열에서 중복을 제거한 uniqueFactors 배열을 만듭니다.

            int[] factorsOf300 = { 2, 2, 3, 5, 5 };

            var uniqueFactors = factorsOf300.Distinct();

            // uniqueFactors = { 2, 3, 5 };

두 집합에서 중복되지 않게 합집합 만들기

Union 메서드는 두 집합을 각 원소가 중복되지 않도록 더한 새로운 집합을 만듭니다.

            int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
            int[] numbersB = { 1, 3, 5, 7, 8 };

            var uniqueNumbers = numbersA.Union(numbersB);

            // uniqueNumbers = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

두 집합 간에 중복되는 요소만 모으기

Intersect 메서드는 두 집합에서 중복되는 원소만 모아서 새로운 집합을 만듭니다.

            int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
            int[] numbersB = { 1, 3, 5, 7, 8 };

            var commonNumbers = numbersA.Intersect(numbersB);

            // commonNumbers = { 5 , 8 };

A 집합에는 있지만 B 집합에는 없는 요소만 모으기

Except 메서드는 기준이 되는 A 집합에만 존재하며 B 집합에 존재하지 않는 원소만 모아서 새로운 집합을 만듭니다.

            int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
            int[] numbersB = { 1, 3, 5, 7, 8 };

            IEnumerable<int> aOnlyNumbers = numbersA.Except(numbersB);

            // aOnlyNumbers = { 0, 2, 4, 6, 9 } ;
반응형