Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengira Sifat Pendua dengan Cekap dalam Senarai Objek Menggunakan LINQ?

Bagaimanakah Saya Boleh Mengira Sifat Pendua dengan Cekap dalam Senarai Objek Menggunakan LINQ?

Susan Sarandon
Lepaskan: 2024-12-29 09:33:11
asal
697 orang telah melayarinya

How Can I Efficiently Count Duplicate Properties in a List of Objects Using LINQ?

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

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

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

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

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!

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