"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية تجاوز المساواة بشكل صحيح () و gethashcode () لطريقة LINQ باستثناء ()؟

كيفية تجاوز المساواة بشكل صحيح () و gethashcode () لطريقة LINQ باستثناء ()؟

نشر في 2025-02-06
تصفح:380

How to Properly Override Equals() and GetHashCode() for LINQ's Except() Method?
في الفئات المخصصة أمر بالغ الأهمية لضمان مقارنة الكائنات المناسبة والتجزئة. توضح هذه المقالة الطريقة الصحيحة لتنفيذ هذه الأساليب لفئة التوصية الخاصة بك لتمكين استخدامها مع طريقة LINQ باستثناء (). () ، تحتاج إلى توفير تطبيق مخصص يقارن الكائنات بناءً على خصائصها الفريدة. في حالتك ، فإن خاصية التوصية هي معرف مناسب. إليك التنفيذ المصحح:

{ var item = obj as complydto ؛ إذا (البند == فارغ) { العودة كاذبة } إرجاع this.recommendationId.equals (item.RecommendationId) ؛ }

تنفيذ GethashCode ()

للمقارنة الثابتة ، يجب أن يكون رمز التجزئة الذي تم إرجاعه هو نفسه بالنسبة للكائنات ذات خصائص التعريف نفسها. في حالتك ، يمكنك إرجاع رمز التجزئة لخاصية التوصية:

تجاوز عام int gethashcode () { إرجاع this.recommendationId.gethashCode () ؛ }

الاستخدام مع LINQ باستثناء ()

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

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

    return this.RecommendationId.Equals(item.RecommendationId);
}

var list1 = new list { / * ... * /} ؛ var list2 = new list { / * ... * /} ؛ var result = list1.except (list2) ؛

ملاحظة:
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3