Inicio > .NET, C#, Desarrollo, Linq, Visual Studio 2010 > Linq y el Metodo Distinct con IEqualityComparer

Linq y el Metodo Distinct con IEqualityComparer

En este ejemplo no estoy usando tipos anónimos, ya que previamente definí mi clase a ocupar con Linq.

Lo primero es importar la libreria de Reflection.

using System.Reflection;

Lo siguiente es crear una clase que implemente la interface de IEqualityComparer, esta clase se usa sobre un listado del tipo de dato a utilizar

public class OCDiferentes : IEqualityComparer<OCxItem>
{
    public bool Equals(OCxItem x, OCxItem y)
    {
        if (x == null || y == null)    //optional
            return false;
        else
            return x.ID == y.ID;
    }

    public int GetHashCode(OCxItem Item)
    {
        return Item.ID.GetHashCode();
    }
}

Dentro de esta clase tenemos el método Equals donde se compararan los valores que queremos que sean únicos. Ahora la implementación.

ListadoResultante = (ListadoOrigen
       .Where(d => (d.Y- d.X) > 0) //Filtro 
       .Select(d => new OCxItem
       {
           PId = (string)d.PId,
           Nombre = d.Nombre,
           ID = d.ID,
           Fecha = d.Fecha,
       }).Distinct(new OCDiferentes())
       .OrderBy(d => d.ID)).ToList(); //Ordenamiento

Dentro del llamado al metodo Distinct creamos una clase para que compare, del tipo que habíamos definido previamente “OCDiferentes

También incluyo un Where y un Order by para que se entienda como se utilizarían esas otras instrucciones.

Por ultimo tamvien estoy usando la instruccion ToList(), para que cree el listado del tipo que se define en el Select que es “OCxItem

Nota: Listado ListadoResultante y ListadoOrigen son del tipo List<OCxItem>

  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: