Menentukan N Elemen Terakhir Koleksi dengan LINQ
Mendapatkan semula nombor tertentu elemen penutup daripada koleksi boleh menjadi keperluan yang kerap. Walaupun rangka kerja mungkin tidak menawarkan kaedah khusus, kaedah sambungan boleh memberi manfaat.
Menggunakan Kaedah Sambungan TakeLast
Kaedah yang cekap untuk mengekstrak unsur N terakhir yang digunakan Kaedah Langkau LINQ. Kod berikut menggambarkan penggunaannya:
collection.Skip(Math.Max(0, collection.Count() - N));
Mengekalkan pesanan item, teknik ini mengelakkan pengisihan dan memastikan keserasian dengan pelbagai penyedia LINQ. Langkah berjaga-jaga mesti diambil untuk mengelakkan memberikan hujah negatif kepada Langkau, kerana pembekal tertentu (mis., Rangka Kerja Entiti) mungkin menimbulkan pengecualian.
Melaksanakan Kaedah Pelanjutan
Kod di bawah mempersembahkan kaedah sambungan TakeLast tersuai:
public static class MiscExtensions { // Ex: collection.TakeLast(5); public static IEnumerable<T> TakeLast<T>(this IEnumerable<T> source, int N) { return source.Skip(Math.Max(0, source.Count() - N)); } }
Prestasi Pertimbangan
Bergantung pada struktur data, pengiraan (melalui Count()) boleh menghasilkan berbilang penghitungan. Walaupun pengoptimuman wujud untuk jenis data dan senario tertentu, pendekatan ini mungkin tidak sesuai untuk enumerable hadapan sahaja.
Algoritma Satu Laluan Alternatif
Dalam kes di mana prestasi adalah kritikal, algoritma satu laluan alternatif boleh digunakan. Pendekatan ini menggunakan penimbal sementara untuk mengumpul item, menghasilkan elemen N terakhir sebaik sahaja penghujung koleksi dicapai. Teknik yang dibangunkan oleh Lasse V. Karlsen dan Mark Byers menjadi contoh algoritma sedemikian.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Elemen N Terakhir Koleksi Menggunakan LINQ dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!