equals
equals (C# 참조)
equals는 쿼리 표현식의 join 절에서 두 시퀀스의 요소를 비교할 때 쓰는 상황별 키워드(contextual keyword) 예요. 이 키워드는 특정 자리에서만 키워드로 동작해서, 다른 곳에서는 일반 식별자로 써도 괜찮아요. join 절 자체에 대한 더 자세한 설명은 join 절 문서를 참고하면 돼요.
본문
join 절을 쓸 때 두 시퀀스의 요소가 서로 같은지 비교하는 기준을 정해야 하는데, 그 비교 조건을 붙이는 자리가 바로 equals예요. 기억해야 할 점은 join 절 안에서 equals는 반드시 왼쪽이 첫 번째 시퀀스의 요소, 오른쪽이 두 번째 시퀀스의 요소여야 한다는 거예요. 즉 순서가 바뀌면 안 돼요. 이는 LINQ의 조인 조건이 항상 왼쪽-오른쪽 순서를 지킨다는 의미이기도 해요.
다음 예시를 볼게요. Category 목록과 Product 목록을 조인하면서, 카테고리 ID가 같은 상품들을 묶어 새 객체를 만들고 있어요.
var innerJoinQuery =
from category in categories
join prod in products on category.ID equals prod.CategoryID
select new { ProductName = prod.Name, Category = category.Name };
여기서 category.ID equals prod.CategoryID가 "카테고리의 ID와 상품의 CategoryID가 서로 같을 때만 매칭한다"는 조건이에요. 주의할 점은 == 비교 연산자와 달리 equals 앞뒤 순서를 바꿔 쓰면 컴파일 오류가 나니까, 항상 첫 번째 시퀀스 요소가 왼쪽, 두 번째 시퀀스 요소가 오른쪽에 오게 써야 해요.