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 중국어 웹사이트의 기타 관련 기사를 참조하세요!