본문 바로가기
C#

[C#] 링크(LINQ) - SequenceEqual, Concat, Zip

by 코모's 2023. 7. 20.
반응형

시퀀스 작업(Sequence operations)

시퀀스 작업 메서드는 집합 전체를 대상으로 작업한다.

 

SequenceEqual()

두 집합의 모든 요소가 같은 순서대로 있는지 비교할때 사용한다.

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

 

Zip()

두 집합을 연결할때 사용한다.

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()

집합 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
반응형