Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengatasi Equals() dan GetHashCode() dengan betul untuk Kaedah LINQ Except()?
Melaksanakan Kaedah Equals() dan GetHashCode() untuk Kelas Tersuai: Contoh Praktikal
Mengatasi kaedah Equals() dan GetHashCode() dalam kelas tersuai adalah penting untuk memastikan perbandingan objek dan pencincangan yang betul. Artikel ini menunjukkan cara yang betul untuk melaksanakan kaedah ini untuk kelas RecommendationDTO anda untuk mendayakan penggunaannya dengan kaedah LINQ's Except().
Melaksanakan Equals()
Untuk mengatasi Equals (), anda perlu menyediakan pelaksanaan tersuai yang membandingkan objek berdasarkan sifat uniknya. Dalam kes anda, sifat RecommendationId ialah pengecam yang sesuai. Berikut ialah pelaksanaan yang diperbetulkan:
public override bool Equals(object obj) { var item = obj as RecommendationDTO; if (item == null) { return false; } return this.RecommendationId.Equals(item.RecommendationId); }
Melaksanakan GetHashCode()
Kaedah GetHashCode() menjana kod cincang untuk objek. Untuk perbandingan yang konsisten, kod cincang yang dikembalikan harus sama untuk objek dengan sifat pengenalpastian yang sama. Dalam kes anda, anda boleh memulangkan kod cincang sifat RecommendationId:
public override int GetHashCode() { return this.RecommendationId.GetHashCode(); }
Penggunaan dengan LINQ Except()
Dengan kaedah ganti ini disediakan, anda kini boleh menggunakan kaedah LINQ Except() untuk mengecualikan objek yang sama antara satu sama lain berdasarkan Harta RecommendationId. Contohnya:
var list1 = new List<RecommendationDTO> { /* ... */ }; var list2 = new List<RecommendationDTO> { /* ... */ }; var result = list1.Except(list2);
Nota: Pastikan anda menyemak nilai nol dan gunakan selongsong yang betul untuk sifat dan kaedah.
Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Equals() dan GetHashCode() dengan betul untuk Kaedah LINQ Except()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!