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));
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)); } }
Kaedah sambungan ini boleh digunakan sebagai berikut:
collection.TakeLast(5);
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!