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
Susan Sarandonasal
2024-12-29 09:33:11711semak imbas

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);

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!

Kenyataan:
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