Inicio > LINQ, Todas las Categorias > Truco: Distinct en LINQ

Truco: Distinct en LINQ

Este truco es mas que todo para aclarar la duda que surgió en al finalizar el WebCast que por cuestiones de tiempo no logre responderle, además que no esta mal saber como usarlo.

Con esta Clausula podemos restringir la visualización de los datos repetidos en una consulta.

El Siguiente Truco esta orientado a LINQ to SQL (C# – ASP.net)

//establezco mi DataContex
dcNorthwindDataContext db = newdcNorthwindDataContext();
//Defino mi consulta
var Consulta = (from t indb.Territories
               select t).Distinct();
//Muestro el resultado en un GridView
gvLINQtoSQL1.DataSource = Consulta.ToList();
gvLINQtoSQL1.DataBind();

El Siguiente Truco esta orientado a LINQ to Objects (C# – ASP.net)

Clase:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace DemoLINQCSharp
{
    public class clsSpeaker
    {
        private string m_sNombre;
        private string m_sApellido;
        private string m_sTema;
        private int m_iDuracionMinutos;

        public string Nombre
        {
            get
            {
                return m_sNombre;
            }
            set
            {
                m_sNombre = value;
            }
        }

        public string Apellido
        {
            get
            {
                return m_sApellido;
            }
            set
            {
                m_sApellido = value;
            }
        }

        public string Tema
        {
            get
            {
                return m_sTema;
            }
            set
            {
                m_sTema = value;
            }
        }

        public int DuracionMinutos
        {
            get
            {
                return m_iDuracionMinutos;
            }
            set
            {
                m_iDuracionMinutos = value;
            }
        }
    }
}

 

En el Formulario Web:

Defino el metodo que llena los datos a partir de la clase mencionada anteriormente.

public List<clsSpeaker> speaker()
      {
          List<clsSpeaker> listaSpeaker = new List<clsSpeaker> 
          { 
              new clsSpeaker{Nombre="Alexander", Apellido="Jimenez", DuracionMinutos=60, Tema="LINQ con C#"},
              new clsSpeaker{Nombre="Manuel", Apellido="Mendez", DuracionMinutos=45, Tema="SilverLight"},
              new clsSpeaker{Nombre="Oscar", Apellido="Berroteran", DuracionMinutos=60, Tema="LINQ con VB"},
              new clsSpeaker{Nombre="David", Apellido="Delgado", DuracionMinutos=90, Tema="Comunidades"},
              new clsSpeaker{Nombre="Rafael", Apellido="Linares", DuracionMinutos=45, Tema="SQL Server 2008"},
              new clsSpeaker{Nombre="Sara", Apellido="Linares", DuracionMinutos=60, Tema="Comunidades"}
          };
          return listaSpeaker;
      }

 

Lleno en GridView de mi pagina web a traves de la invocacion de un LinkButton:

 

protected void lnkLINQtoObjects1_Click(object sender, EventArgs e)
{
    var Consulta = (from s in speaker()
                   select s).Distinct();
    gvLINQtoObjects1.DataSource = Consulta.ToList();
    gvLINQtoObjects1.DataBind();
}

Espero que le sea de ayuda.

Post Cruzado con el blog http://geeks.ms/blogs/ajimenez

Categorías:LINQ, Todas las Categorias
  1. 14 febrero 2012 a las 11:33 AM | #1

    Tal vez podrías haber simplificado las propiedades de clsSpeaker (ojo que las clases deben comenzar con mayúscula), de esta form:

    public string Nombre { get; set; }

    Además, hay una redundancia en:
    var Consulta = (from s in speaker()
    select s).Distinct();

    Puede ser escrito simplemente con:
    var Consulta = speaker().Distinct();

    (Ojo nuevamente con el casing. Las variables locales deberían ser en minúscula ["consulta"] y los métodos en mayúscula ["Speaker()"]).

  1. Aún no hay trackbacks

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.

Únete a otros 27 seguidores