Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengatasi Equals() dan GetHashCode() dengan betul untuk LINQ Except() yang Cekap?

Bagaimana untuk Mengatasi Equals() dan GetHashCode() dengan betul untuk LINQ Except() yang Cekap?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-05 10:54:411010semak imbas

How to Correctly Override Equals() and GetHashCode() for Efficient LINQ Except()?

Pelaksanaan Equals() dan GetHashCode() yang betul untuk Kelas Tersuai

Untuk menggunakan kaedah LINQ Except() dengan berkesan untuk kelas RecommendationDTO anda , anda perlu mengatasi Equals() dan GetHashCode() kaedah.

Equals() Kaedah:

Equals() kaedah menentukan sama ada dua objek mempunyai nilai yang sama. Berikut ialah pelaksanaan yang dikemas kini:

public override bool Equals(object obj)
{
    var item = obj as RecommendationDTO;

    if (item == null)
    {
        return false;
    }

    return this.RecommendationId.Equals(item.RecommendationId);
}
  • Ia mula-mula menyemak sama ada objek yang diluluskan boleh dihantar ke tika RecommendationDTO.
  • Jika berjaya, ia membandingkan sifat RecommendationId bagi kedua-dua objek.

GetHashCode() Kaedah:

Kaedah GetHashCode() menjana kod cincang untuk objek. Ini digunakan untuk perbandingan dan carian objek yang lebih pantas. Berikut ialah pelaksanaan yang dikemas kini:

public override int GetHashCode()
{
    return this.RecommendationId.GetHashCode();
}
  • Ia hanya mengembalikan kod cincang sifat RecommendationId.

Dengan mengatasi Equals() dan GetHashCode() seperti ini, anda pastikan kaedah LINQ's Except() akan mengenal pasti dan mengecualikan objek RecommendationDTO pendua dengan tepat berdasarkan nilai RecommendationId mereka.

Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Equals() dan GetHashCode() dengan betul untuk LINQ Except() yang Cekap?. 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