Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mendapatkan Elemen N Terakhir Koleksi LINQ dengan Cekap?

Bagaimanakah Saya Boleh Mendapatkan Elemen N Terakhir Koleksi LINQ dengan Cekap?

Patricia Arquette
Lepaskan: 2025-01-03 04:04:38
asal
753 orang telah melayarinya

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

Mendapatkan N Elemen Terakhir Koleksi Menggunakan LINQ

Dalam LINQ, mendapatkan elemen N terakhir koleksi boleh dicapai dengan gabungan daripada kaedah Langkau() dan Count(). Kaedah Langkau() membolehkan anda melangkau bilangan elemen tertentu dari permulaan koleksi, manakala Count() mengembalikan jumlah bilangan elemen dalam koleksi.

Untuk mendapatkan N elemen terakhir, kita boleh tentukan jumlah kiraan pungutan dan tolak N daripadanya. Nilai yang terhasil kemudiannya dihantar ke Skip() untuk melangkau elemen pertama (count - N), hanya meninggalkan elemen N terakhir. Ini boleh dinyatakan sebagai:

collection.Skip(Math.Max(0, collection.Count() - N));
Salin selepas log masuk

Pendekatan ini dengan berkesan membolehkan susunan elemen dikekalkan tanpa memerlukan pengisihan. Ia juga memastikan keserasian merentas berbilang penyedia LINQ.

Pelaksanaan Kaedah Sambungan

Berikut ialah pelaksanaan kaedah lanjutan untuk TakeLast(int N) yang menggunakan pendekatan di atas:

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));
    }
}
Salin selepas log masuk

Kaedah sambungan ini boleh digunakan sebagai berikut:

collection.TakeLast(5);
Salin selepas log masuk

Pertimbangan Prestasi

Walaupun pendekatan ini secara amnya cekap, ia patut mempertimbangkan kesan memanggil Count() pada struktur data tertentu. Dalam sesetengah kes, ini boleh mengakibatkan penghitungan keseluruhan struktur data. Prestasi boleh dioptimumkan lagi dalam situasi di mana bilangan ke hadapan sahaja diperlukan dan berbilang hantaran ke atas data perlu dielakkan. Algoritma satu laluan alternatif yang menggunakan penimbal sementara boleh digunakan untuk kes sedemikian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Elemen N Terakhir Koleksi LINQ dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan