LINQ 확장 방법 순서
질문 출처: LINQ 확장 메서드의 순서가 성능에 영향을 미치나요?
질문:
LINQ 확장 메서드의 순서가 성능에 큰 영향을 미치지 않는 이유는 무엇입니까? 예를 들어, 다음 두 명령문을 비교하면 Where
다음에 FirstOrDefault
가 오는 것이 FirstOrDefault
다음에 Where
이 오는 것보다 느리다고 생각할 수 있습니다.
<code class="language-csharp">hugeList.Where(x => x.Text.Contains("10000")).FirstOrDefault(); hugeList.FirstOrDefault(x => x.Text.Contains("10000"));</code>
정답:
다음에 Where
가 느려질 것이라는 가정은 잘못된 것입니다. FirstOrDefault
첫 번째 일치 항목을 얻기 전에 모든 일치 항목을 찾을 필요는 없습니다. 요청 시 일치 항목을 검색합니다. 즉, 첫 번째 일치 항목만 필요한 경우 첫 번째 일치 항목을 찾은 후 중지됩니다. Where
3명이 참여했습니다:B는 A가 레드 카드를 제공할 때까지 A에게 반복적으로 카드를 요청합니다. 첫 번째 레드 카드를 획득하면 C에게 전달되고 프로세스가 종료됩니다. B는 첫 번째 레드 카드를 찾은 후에 A에게 카드를 계속 요청할 필요가 없습니다.
A는 섞인 카드 한 벌을 들고 있습니다.
- B는 '카드가 빨간색이면'이라고 적힌 셔츠를 입고 있습니다.
- C가 B에게 "첫 번째 카드를 주세요."라고 말했습니다.
마찬가지로 LINQ 문에서
는 B와 마찬가지로 카드(목록의 항목)를 필터링하여 첫 번째 일치 항목을 찾습니다. 첫 번째 일치 항목을 반환하기 전에 모든 일치 항목을 찾을 필요는 없습니다. Where
다음에 FirstOrDefault
이 오는 경우에는 상황이 달라집니다. Where
는 첫 번째 항목을 검색해야 하며, FirstOrDefault
은 필터를 적용해야 하며, 여기에는 모든 항목을 반복하는 작업이 포함됩니다. 이는 Where
다음에 Where
을 사용하는 것보다 효율성이 떨어집니다. FirstOrDefault
위 내용은 LINQ 확장 메서드(예: Where 및 FirstOrDefault)의 순서가 성능에 영향을 줍니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!