了解集合的結尾是各種程式設計場景中的常見要求。在本文中,我們將探討 LINQ 如何幫助我們有效地提取集合的最後 N 個元素。
雖然該框架沒有為這項精確任務提供專用方法,但我們可以利用LINQ 創建一個優雅的擴展方法來實現我們的目標。以下程式碼片段示範了此擴充方法:
collection.Skip(Math.Max(0, collection.Count() - N));
此方法提供了幾個主要好處:
避免使用負數呼叫 Skip 至關重要,因為某些提供者(例如實體框架)可能會拋出 ArgumentException。 Math.Max 呼叫可以防止這個問題。
為了方便起見,我們可以將擴展方法封裝到一個單獨的類別中:
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)); } }
透過這個擴充方法,我們可以檢索最後N 個使用簡潔語法的任何可枚舉元素,例如:
collection.TakeLast(5);
雖然這種方法通常是高效能的,但了解潛在性能很重要影響。對 Count() 的呼叫可能會觸發某些資料結構的多個枚舉。為了避免這種情況,請考慮針對僅前向枚舉使用替代的一次性演算法(例如緩衝)。
以上是LINQ 如何有效率地檢索集合的最後 N 個元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!