본문 바로가기

Develop/.NET 가이드

[C#] LINQ 사용방법 - 시퀀스 작업 SequenceEqual, Concat, Zip

반응형

LINQ

시퀀스 작업 Sequence operations

시퀀스 작업에 포함된 메서드는 SequenceEqual, Concat, Zip 입니다. 시퀀스 작업 메서드는 집합 전체를 대상으로 작업합니다.

두 집합의 모든 요소가 같은 순서대로 있는지 비교하기

            var wordsA = new string[] { "cherry", "apple", "blueberry" };
            var wordsB = new string[] { "cherry", "apple", "blueberry" };

            bool match = wordsA.SequenceEqual(wordsB);

            // match = true
            var wordsA = new string[] { "cherry", "apple", "blueberry" };
            // 순서를 변경하면 결과가 달라집니다.
            var wordsB = new string[] { "apple", "blueberry", "cherry" };

            bool match = wordsA.SequenceEqual(wordsB);

            // match = false

두 집합 연결하기

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

            var allNumbers = numbersA.Concat(numbersB);

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

Enumerable.Zip

Enumerable.Zip 메서드는 집합 A의 모든 요소와 집합 B의 모든 요소와 하나하나 대조하여 연결하는 메서드입니다. 주로 수학에서 벡터의 내적 곱을 계산할 때 사용됩니다.

            int[] vectorA = { 0, 2, 4, 5, 6 };
            int[] vectorB = { 1, 3, 5, 7, 8 };

            int dotProduct = vectorA.Zip(vectorB, (a, b) => a * b).Sum();

            // dotProduct = 109
반응형