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.
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