집합 작업
업데이트: 2007년 11월
LINQ의 집합 작업은 같은 컬렉션 또는 별도의 컬렉션(또는 집합) 내에서 동등한 요소가 있는지 없는지에 따라 결과 집합을 생성하는 쿼리 작업을 가리킵니다.
집합 작업을 수행하는 표준 쿼리 연산자 메서드는 다음 단원에 나열되어 있습니다.
메서드
메서드 이름 |
설명 |
C# 쿼리 식 구문 |
Visual Basic 쿼리 식 구문 |
추가 정보 |
---|---|---|---|---|
Distinct |
컬렉션에서 중복 값을 제거합니다. |
적용할 수 없음 |
Distinct |
|
Except |
한 컬렉션의 요소가 두 번째 컬렉션에서 나타나지 않음을 나타내는 차집합을 반환합니다. |
적용할 수 없음 |
적용할 수 없음 |
|
Intersect |
두 컬렉션의 각각에 나타나는 요소를 의미하는 교집합을 반환합니다. |
적용할 수 없음 |
적용할 수 없음 |
|
공용 구조체 |
두 컬렉션 중 하나에 나타나는 고유한 요소를 의미하는 합집합을 반환합니다. |
적용할 수 없음 |
적용할 수 없음 |
집합 작업의 비교
Distinct
다음 그림에서는 문자 시퀀스에서의 Enumerable.Distinct 메서드 동작을 보여 줍니다. 반환된 시퀀스에는 입력 시퀀스의 고유한 요소가 포함됩니다.
Except
다음 그림에서는 Enumerable.Except의 동작을 보여 줍니다. 반환된 시퀀스에는 두 번째 입력 시퀀스에는 없는 첫 번째 입력 시퀀스의 요소만 포함됩니다.
Intersect
다음 그림에서는 Enumerable.Intersect의 동작을 보여 줍니다. 반환된 시퀀스에는 입력 시퀀스의 양쪽에 공통된 요소가 포함됩니다.
공용 구조체
다음 그림에서는 두 문자 시퀀스에서의 합집합 연산을 보여 줍니다. 반환된 시퀀스에는 양쪽 입력 시퀀스에서 고유한 요소가 포함됩니다.
쿼리 식 구문 예제
다음 예제에서는 LINQ 쿼리에서 Distinct 절(Visual Basic에서만 사용 가능)을 사용하여 정수 목록에서 고유한 숫자를 반환합니다.
Dim classGrades As New System.Collections.Generic.List(Of Integer)(New Integer() {63, 68, 71, 75, 68, 92, 75})
Dim distinctQuery = From grade In classGrades _
Select grade Distinct
Dim sb As New System.Text.StringBuilder("The distinct grades are: ")
For Each number As Integer In distinctQuery
sb.Append(number & " ")
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' The distinct grades are: 63 68 71 75 92