> 백엔드 개발 > C++ > LINQ 컬렉션의 마지막 N개 요소를 효율적으로 검색하려면 어떻게 해야 합니까?

LINQ 컬렉션의 마지막 N개 요소를 효율적으로 검색하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2025-01-03 04:04:38
원래의
753명이 탐색했습니다.

How Can I Efficiently Retrieve the Last N Elements of a LINQ Collection?

LINQ를 사용하여 컬렉션의 마지막 N 요소 검색

LINQ에서는 다음 조합을 사용하여 컬렉션의 마지막 N 요소를 얻을 수 있습니다. Skip() 및 Count() 메서드. Skip() 메서드를 사용하면 컬렉션 시작 부분에서 지정된 수의 요소를 건너뛸 수 있으며, Count()는 컬렉션의 총 요소 수를 반환합니다.

마지막 N개 요소를 얻으려면 다음을 수행하세요. 컬렉션의 총 개수를 결정하고 여기서 N을 뺍니다. 그런 다음 결과 값이 Skip()에 전달되어 첫 번째(개수 - N) 요소를 건너뛰고 마지막 N 요소만 남깁니다. 이는 다음과 같이 표현될 수 있습니다.

collection.Skip(Math.Max(0, collection.Count() - N));
로그인 후 복사

이 접근 방식을 사용하면 정렬하지 않고도 요소 순서를 효과적으로 유지할 수 있습니다. 또한 여러 LINQ 공급자 간의 호환성을 보장합니다.

확장 메서드 구현

다음은 위의 접근 방식을 활용하는 TakeLast(int N)에 대한 확장 메서드 구현입니다.

public static class MiscExtensions
{
    public static IEnumerable<T> TakeLast<T>(this IEnumerable<T> source, int N)
    {
        return source.Skip(Math.Max(0, source.Count() - N));
    }
}
로그인 후 복사

이 확장 방법은 다음과 같이 사용할 수 있습니다. 다음은 다음과 같습니다.

collection.TakeLast(5);
로그인 후 복사

성능 고려 사항

이 접근 방식은 일반적으로 효율적이지만 특정 데이터 구조에 대한 Count() 호출의 영향을 고려해 볼 가치가 있습니다. 어떤 경우에는 전체 데이터 구조가 열거될 수 있습니다. 순방향 열거형이 필요하고 데이터에 대한 다중 전달을 피해야 하는 상황에서는 성능을 더욱 최적화할 수 있습니다. 이러한 경우에는 임시 버퍼를 활용하는 대체 원패스 알고리즘을 사용할 수 있습니다.

위 내용은 LINQ 컬렉션의 마지막 N개 요소를 효율적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿