Biasanya, kita menggunakan Distinct di C# untuk deduplikasi array, tipe data berbasis array umum, seperti int, string. juga dapat digunakan untuk deduplikasi objek, mari kita lihat definisi metode Distinct C#:
Ada beban berat, parameter pertama ditambahkan ini, yaitu metode ekspansi, tentang metode ekspansi, tolong dipahami Baidu. Mari kita pelajari deduplikasi objek Distinct, katakanlah kita sekarang memiliki kelas People:
Kami mendeklarasikan kumpulan objek ListPeole:
Mari kita gunakan metode Distinct di ListPeople tanpa parameter apa pun, dan hasilnya adalah sebagai berikut:
Dapat dilihat bahwa jika metode Distinct tidak memiliki parameter, metode tersebut akan mendeduplikasi p, p1, p2 dalam kumpulan objek, dan tidak ada deduplikasi untuk objek yang berbeda dengan nilai anggota objek yang sama. Sekarang kita memiliki persyaratan, untuk Orang dengan ID yang sama, kita dihitung sebagai orang yang sama, untuk mengeluarkan orang yang tidak duplikat dalam kumpulan (hanya output satu untuk ID yang sama), saat ini, kita menggunakan metode kedua Distinct, metode mengharuskan parameter yang diteruskan adalah jenis IEqualityComparer, mewarisi antarmuka generik, kita menambahkan kode berikut:
Mewarisi antarmuka IEqualityComparer, Anda harus mengimplementasikan metode Equals dan GetHashCode. Saat kita membandingkan, kita dapat meneruskan entitas dengan PeopleCompareByID:
Hasil lari adalah sebagai berikut:
Kami telah mencapai efek deduplikasi dengan ID. Sekarang persyaratannya telah berubah lagi, ID dan provinsi adalah orang yang sama, untuk mengeluarkan informasi orang tersebut (yang sama dapat mengeluarkannya sesuka hati), saat ini, kita melihat bahwa ID=0 dan Province="Hubei" diduplikasi, untuk mendeduplikasinya, kita memiliki kelas lain, atau mewarisi dari IEqualityComparer:
Demikian pula, saat menggunakan metode Distinct, instance PeopleCompareByIDAndProvince diteruskan:
Hasil setelah berjalan adalah sebagai berikut:
Mencapai efek yang kita inginkan. Metode ini dapat digunakan ketika menghadapi masalah deduplikasi dengan tiga atau lebih anggota objek untuk menentukan apakah objek tersebut diduplikasi. Di atas adalah pendapat saya yang rendah hati.
|