首頁 > 後端開發 > C++ > LINQ 如何有效率地檢索集合的最後 N 個元素?

LINQ 如何有效率地檢索集合的最後 N 個元素?

Linda Hamilton
發布: 2025-01-03 03:27:39
原創
856 人瀏覽過

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

使用 LINQ 檢索集合中的最後 N 個元素

了解集合的結尾是各種程式設計場景中的常見要求。在本文中,我們將探討 LINQ 如何幫助我們有效地提取集合的最後 N 個元素。

雖然該框架沒有為這項精確任務提供專用方法,但我們可以利用LINQ 創建一個優雅的擴展方法來實現我們的目標。以下程式碼片段示範了此擴充方法:

collection.Skip(Math.Max(0, collection.Count() - N));
登入後複製

此方法提供了幾個主要好處:

  • 保留專案順序:它保留了專案的原始順序集合中的元素,而不依賴排序。
  • 相容性:它與各種 LINQ 提供者相容,確保跨平台一致性。

避免使用負數呼叫 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板