使用LINQ 來擷取集合的最後N 個元素
在LINQ 中,可以透過組合來取得集合的最後N 個元素Skip( ) 和Count() 方法。 Skip() 方法可讓您從集合的開頭跳過指定數量的元素,而 Count() 則傳回集合中元素的總數。
要取得最後 N 個元素,我們可以確定集合的總數並從中減去 N。然後將結果值傳遞給 Skip() 以跳過前 (count - 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中文網其他相關文章!