"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo anular correctamente Equals () y GethashCode () para el método de Linq excepto ()?

¿Cómo anular correctamente Equals () y GethashCode () para el método de Linq excepto ()?

Publicado el 2025-02-06
Navegar:915

How to Properly Override Equals() and GetHashCode() for LINQ's Except() Method?

implementando iguales () y gethashcode () métodos para clases personalizadas: un ejemplo práctico

anulando los métodos iguales () y gethashcode () En clases personalizadas, es crucial para garantizar la comparación de objetos y el hash de objetos adecuados. Este artículo demuestra la forma correcta de implementar estos métodos para su clase de recomendación para habilitar su uso con el método de Linq excepto ().

implementando iguales ()

para anular iguales (), debe proporcionar una implementación personalizada que compara los objetos en función de sus propiedades únicas. En su caso, la propiedad de recomendación es un identificador adecuado. Aquí está la implementación corregida:

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

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

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

implementando gethashcode ()

el método gethashcode () genera un código hash para el objeto. Para una comparación consistente, el código hash devuelto debe ser el mismo para los objetos con las mismas propiedades de identificación. En su caso, puede devolver el código hash de la propiedad RecomendationID:

public override int GetHashCode()
{
    return this.RecommendationId.GetHashCode();
}

con linq excepto ()

con estos métodos anulados en su lugar, ahora puede utilizar el método Linq excepto () para excluir objetos que son iguales a cada uno otro basado en su propiedad recomendada. Por ejemplo:

var list1 = new List { /* ... */ };
var list2 = new List { /* ... */ };

var result = list1.Except(list2);

nota: asegúrese de verificar los valores nulos y usar la carcasa correcta para propiedades y métodos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3