Mengira Pendua dalam Senarai Objek dengan LINQ
Memandangkan senarai objek dengan sifat unik, menentukan kiraan sifat pendua ialah satu keperluan biasa dalam pengaturcaraan. Menggunakan sintaks LINQ (Language Integrated Query), tugas ini boleh dicapai dengan berkesan.
Menggunakan GroupBy dan OrderBy
Pendekatan asas melibatkan penggunaan pengendali GroupBy dan OrderBy LINQ. GroupBy membahagikan senarai kepada kumpulan berdasarkan sifat yang ditentukan, manakala OrderBy menyusun kumpulan dalam tertib menurun mengikut kiraan unsur.
var groupedItems = list.GroupBy(x => x.Property) .Select(x => new { Property = x.Key, Count = x.Count() }); var orderedItems = orderedItems.OrderByDescending(x => x.Count);
Kod ini mengumpulkan objek mengikut sifat yang ditentukan, mengira kiraan dalam setiap kumpulan, dan kemudian isih kumpulan dalam tertib menurun mengikut kiraan.
Menyesuaikan Objek Perbandingan
Dalam kes di mana objek tidak mempunyai sifat yang boleh dibandingkan secara langsung, pembanding tersuai atau ungkapan lambda boleh ditakrifkan. Sebagai contoh, jika objek mempunyai sifat ID yang unik:
var groupedItems = list.GroupBy(x => new { x.Property, x.ID }) .Select(x => new { Property = x.Key.Property, Count = x.Count() });
Mengendalikan Berbilang Sifat
Untuk mempertimbangkan berbilang sifat untuk pengumpulan, kunci komposit boleh digunakan:
var groupedItems = list.GroupBy(x => new { x.Property1, x.Property2 }) .Select(x => new { Property1 = x.Key.Property1, Property2 = x.Key.Property2, Count = x.Count() });
Melaksanakan dengan Pelanjutan Kaedah
Untuk ketepatan kod yang lebih besar, kaedah sambungan boleh digunakan:
public static IEnumerable<T> CountDuplicates<T>(this IEnumerable<T> list, Func<T, object> keySelector) { return list.GroupBy(keySelector) .Select(x => new { Key = x.Key, Count = x.Count() }); }
Kaedah sambungan ini menyediakan cara yang boleh digunakan semula untuk mengira pendua berdasarkan fungsi pemilih kunci yang ditentukan.
Dengan memanfaatkan kuasa LINQ dan memanfaatkan teknik ini, pembangun boleh mengurus dan menganalisis data yang melibatkan dengan cekap nilai pendua dalam senarai objek.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Sifat Pendua dengan Cekap dalam Senarai Objek Menggunakan LINQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!