// ===++=== // // OrtizOL // // ===--=== /*============================================================ // // Clase: Producto.cs // // Propósito: Uso de la interfaz IEquatable. // ============================================================*/ using System; using System.Collections.Generic; using System.Linq; namespace Recetas.Cap02 { internal class Producto : IEquatable { public string Nombre { get; set; } public int Codigo { get; set; } public bool Equals(Producto p) { if (Object.ReferenceEquals(p, null)) { return false; } if (Object.ReferenceEquals(this, p)) { return true; } return Codigo.Equals(p.Codigo) && Nombre.Equals(p.Nombre); } public override int GetHashCode() { int hashNombre = Nombre == null ? 0 : Nombre.GetHashCode(); int hashCodigo = Codigo.GetHashCode(); return hashNombre ^ hashCodigo; } } internal class PruebaProducto { static public void Main() { Producto[] productos = { new Producto { Nombre = "Teclado", Codigo = 31001}, new Producto { Nombre = "Kindle", Codigo = 97001}, new Producto { Nombre = "Mouse", Codigo = 72004}, new Producto { Nombre = "Kindle", Codigo = 97001} }; // Remoción de duplicados: IEnumerable sinDuplicados = productos.Distinct(); foreach (Producto producto in sinDuplicados) { Console.WriteLine("{0} - {1}", producto.Nombre, producto.Codigo); } } } }