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

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

Patricia Arquette
發布: 2025-01-03 04:04:38
原創
748 人瀏覽過

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

使用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中文網其他相關文章!

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