Memahami penghujung koleksi ialah keperluan biasa dalam pelbagai senario pengaturcaraan. Dalam artikel ini, kami akan meneroka cara LINQ boleh membantu kami dalam mengekstrak elemen N terakhir koleksi dengan berkesan.
Walaupun rangka kerja tidak menyediakan kaedah khusus untuk tugasan yang tepat ini, kami boleh memanfaatkan kuasa LINQ untuk mencipta kaedah sambungan elegan yang mencapai matlamat kami. Coretan kod berikut menunjukkan kaedah sambungan ini:
collection.Skip(Math.Max(0, collection.Count() - N));
Pendekatan ini menawarkan beberapa faedah utama:
Adalah penting untuk mengelak daripada memanggil Langkau dengan nombor negatif, kerana sesetengah penyedia (mis., Rangka Kerja Entiti) mungkin membuang ArgumentException. Panggilan Math.Max melindungi terhadap isu ini.
Untuk kemudahan, kami boleh membungkus kaedah sambungan ke dalam kelas berasingan:
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)); } }
Dengan kaedah sambungan ini, kami boleh mendapatkan semula N terakhir elemen apa-apa bilangan yang menggunakan sintaks ringkas, seperti:
collection.TakeLast(5);
Walaupun pendekatan ini secara amnya berprestasi, ia adalah penting untuk mengetahui potensi implikasi prestasi. Panggilan ke Count() boleh mencetuskan berbilang penghitungan untuk struktur data tertentu. Untuk mengelakkan perkara ini, pertimbangkan algoritma satu laluan alternatif (cth., penimbalan) untuk enumerable hadapan sahaja.
Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Mendapatkan Elemen N Terakhir Koleksi dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!