표준 쿼리 연산자 메서드의 LINQ to Objects 구현은 즉시 실행 또는 지연이라는 두 가지 주요 방법 중 하나로 실행됩니다. 지연된 실행을 사용하는 쿼리 연산자는 스트리밍과 비 스트리밍의 두 범주로 나눌 수도 있습니다. 다른 쿼리 연산자가 실행되는 방법을 알고 있는 경우 지정된 쿼리에서 얻는 결과를 이해하는 데 도움이 될 수 있습니다. 데이터 원본이 변경되거나 다른 쿼리 위에 쿼리를 빌드하는 경우 특히 그렇습니다. 이 항목에서는 해당 실행 방식에 따라 표준 쿼리 연산자를 분류합니다.
실행 방식
즉시
즉시 실행은 데이터 원본을 읽고 쿼리가 선언된 코드의 지점에서 작업이 수행됨을 의미합니다. 열거할 수 없는 단일 결과를 반환하는 모든 표준 쿼리 연산자는 즉시 실행됩니다.
연기됨
지연된 실행은 쿼리가 선언된 코드의 지점에서 작업이 수행되지 않음을 의미합니다. 이 작업은 쿼리 변수가 열거된 경우에만 수행됩니다(예: 문을 사용하여 For Each
). 즉, 쿼리 실행 결과는 쿼리가 정의될 때가 아니라 쿼리가 실행될 때 데이터 원본의 내용에 따라 달라집니다. 쿼리 변수가 여러 번 열거되는 경우 결과가 매번 다를 수 있습니다. 거의 모든 표준 쿼리 연산자는, 반환 형식이 IEnumerable<T> 또는 IOrderedEnumerable<TElement>인 경우, 지연된 방식으로 실행됩니다.
지연된 실행을 사용하는 쿼리 연산자는 스트리밍 또는 비 스트리밍으로 추가로 분류할 수 있습니다.
스트리밍
스트리밍 연산자는 요소를 생성하기 전에 모든 원본 데이터를 읽을 필요가 없습니다. 실행 시 스트리밍 연산자는 읽을 때 각 원본 요소에 대해 해당 작업을 수행하고 해당하는 경우 요소를 생성합니다. 스트리밍 연산자는 결과 요소를 생성할 수 있을 때까지 원본 요소를 계속 읽습니다. 즉, 둘 이상의 원본 요소를 읽어 하나의 결과 요소를 생성할 수 있습니다.
비 스트리밍
비 스트리밍 연산자는 결과 요소를 생성하기 전에 모든 원본 데이터를 읽어야 합니다. 정렬 또는 그룹화와 같은 작업은 이 범주에 속합니다. 실행 시 비 스트리밍 쿼리 연산자는 모든 원본 데이터를 읽고, 데이터 구조에 배치하고, 작업을 수행하고, 결과 요소를 생성합니다.
분류 테이블
다음 표에서는 실행 방법에 따라 각 표준 쿼리 연산자 메서드를 분류합니다.
비고
연산자가 두 열로 표시된 경우 두 개의 입력 시퀀스가 작업에 포함되고 각 시퀀스가 다르게 평가됩니다. 이러한 경우 항상 지연된 스트리밍 방식으로 평가되는 매개 변수 목록의 첫 번째 시퀀스입니다.
참고하십시오
.NET