martes, 21 de junio de 2011

select distinct linq

Supongamos que tenemos el siguiente DTO:

    public class Receta
    {
        public virtual int SqIdreceta {get;set;}
        public virtual string Shortdescom {get;set;}
        public virtual Decimal? Porcion {get;set;}
        public virtual string Ord {get;set;}
        public virtual string Unidadventa {get;set;}
        /// <summary>
        /// Maestra
        /// </summary>
        public virtual Maestra Maestra {get;set;}
        /// <summary>
        /// Maestra nuevamente
        /// </summary>
        public virtual Maestra Maestraplucom { get; set; }
   }

supongamos que tenemos una tabla "Receta" que describe los productos que componen otro(por ejemplo 1/4 de pollo con papas fritas y bebida), si hacemos un select a esta tabla para desplegar las recetas en un combo para mostrar cuantas recetas tenemos, cada receta va a aparecer n veces (n es la cantidad de ingredientes que componen la receta) haremos un select distinct para obtener las recetas y mostraremos de nuevo el orderby



        public IList GetAllRecetaCombo()
        {
            IList<Receta> listaReceta = new List<Receta>();

            BpCrud<Receta> bpCrudReceta = new BpCrud<Receta>();//clase que va a la base de datos y que tiene sus métodos CRUD ya implementados

            listaReceta = bpCrudReceta.BM.List();//vienen las recetas repetidas

            var recetaInfo =
             (
                from rec in listaReceta
                orderby rec.Maestra.Shortdes// las ordenamos
                select new
                {
                    PLUReceta = rec.Maestra.Plu,
                    DescripcionReceta = rec.Maestra.Shortdes
                }
            ).Distinct().ToList();//filtramos
            return recetaInfo.ToList();
        }

No hay comentarios:

Publicar un comentario