/// <summary>
        /// Lista los beneficio de la base de datos que contiene el nombre pasado como parametro en su nombre
        /// </summary>
        /// <param name="nombre">nombre del Beneficio</param>
        /// <returns>Retorna una lista (ordenada por nombre de artículo) con los beneficios</returns>
        public static List <BeneficioClass> ListarBeneficiosPorNombre(string nombre)
        {
            List <BeneficioClass> r    = new List <BeneficioClass>();
            saluddbEntities       mctx = new saluddbEntities();
            BeneficioClass        x;

            var cur = from b in mctx.beneficios
                      where b.nombre.Contains(nombre)
                      orderby b.nombre
                      select b;

            foreach (var f in cur)
            {
                x = new BeneficioClass();

                x._id_beneficio          = f.id_beneficio;
                x._nombre_beneficio      = f.nombre;
                x._descripcion_beneficio = f.descripcion;

                r.Add(x);
            }


            return(r);
        }
        ///<summary>
        ///   Lista todos los beneficios registrados en la base de datos que están asociados al beneficiario (id_beneficiario)
        /// </summary>
        /// <returns>Retorna una lista de objetos de la clase BeneficioClass</returns>
        /// <param name="id_beneficiario">Id del beneficiario</param>
        /// <returns>Retorna una lista de objetos de la clase ArticulosClass</returns>
        public static List <BeneficioClass> ListarBeneficiosPorBeneficiario(long id_beneficiario)
        {
            List <BeneficioClass> r    = new List <BeneficioClass>();
            saluddbEntities       mctx = new saluddbEntities();
            BeneficioClass        x;

            //une las tablas articulos, itemEntregas y ordenEntregas mediante un Join para obtener los articulos de un determinado beneficiario
            var cur = from bb in mctx.beneficiario_beneficio

                      join b in mctx.beneficios
                      on bb.id_beneficio equals b.id_beneficio

                      where bb.id_beneficiario == id_beneficiario
                      select b;


            foreach (var f in cur)
            {
                x = new BeneficioClass();

                x._id_beneficio          = f.id_beneficio;
                x._nombre_beneficio      = f.nombre;
                x._descripcion_beneficio = f.descripcion;


                r.Add(x);
            }


            return(r);
        }
        /// <summary>
        /// Busca un Beneficio por Id_beneficio
        /// </summary>
        /// <param name="id_beneficio">ID del beneficio a buscar</param>
        /// <returns>Retorna un objeto BeneficioClass</returns>
        public static BeneficioClass BuscarBeneficioPorId(int id_beneficio)
        {
            BeneficioClass r = new BeneficioClass();

            saluddbEntities mctx = new saluddbEntities();

            var cur = from b in mctx.beneficios
                      where b.id_beneficio == id_beneficio
                      select b;

            if (cur.Count() > 0)
            {
                var f = cur.First();

                r._id_beneficio          = f.id_beneficio;
                r._nombre_beneficio      = f.nombre;
                r._descripcion_beneficio = f.descripcion;
            }
            else
            {
                r = null;
            }

            return(r);
        }
        /// <summary>
        /// Lista los Beneficios por criterio
        /// </summary>
        /// <param name="parametro">Parámetro con el que se compara para listar</param>
        /// <param name="criterio">Criterio de búsqueda</param>
        /// <returns>Lista de Beneficios</returns>
        public static List <BeneficioClass> ListarBeneficioPorCriterio(string parametro, CriterioBusqueda criterio)
        {
            List <BeneficioClass> r    = new List <BeneficioClass>();
            saluddbEntities       mctx = new saluddbEntities();
            BeneficioClass        x;



            var cur = from b in mctx.beneficios
                      select b;

            foreach (var f in cur)
            {
                bool agregar = false;
                switch (criterio)
                {
                case CriterioBusqueda.Busqueda_ID:
                    int id = 0;
                    Int32.TryParse(parametro, out id);
                    if (f.id_beneficio == id)
                    {
                        agregar = true;
                    }
                    else
                    {
                        agregar = false;
                    }

                    break;

                case CriterioBusqueda.Busqueda_Nombre_Beneficio:
                    agregar = f.nombre.Contains(parametro);
                    break;

                case CriterioBusqueda.Busqueda_Dni:
                    List <BeneficiarioClass> listaBenef     = BeneficiarioClass.ListarBeneficiarioPorCriterio(parametro, CriterioBusqueda.Busqueda_Dni);
                    List <BeneficioClass>    listaBeneficio = new List <BeneficioClass>();
                    foreach (BeneficiarioClass b in listaBenef)
                    {
                        List <BeneficioClass> listaGrupoBenf = BeneficioClass.ListarBeneficiosPorBeneficiario(b.Id_beneficiario);

                        foreach (BeneficioClass g in listaGrupoBenf)
                        {
                            if (listaBeneficio.Contains(g))
                            {
                            }
                            else
                            {
                                listaBeneficio.Add(g);
                            }
                        }
                    }


                    BeneficioClass benef = listaBeneficio.Find(b => b.Id_beneficio == f.id_beneficio);

                    if (benef != null)
                    {
                        agregar = true;
                    }

                    break;

                case CriterioBusqueda.Busqueda_Nombre:
                    List <BeneficiarioClass> listaBen = BeneficiarioClass.ListarBeneficiarioPorCriterio(parametro, CriterioBusqueda.Busqueda_Nombre);
                    List <BeneficioClass>    listaB   = new List <BeneficioClass>();
                    foreach (BeneficiarioClass b in listaBen)
                    {
                        List <BeneficioClass> listaBeneficiario = BeneficioClass.ListarBeneficiosPorBeneficiario(b.Id_beneficiario);

                        foreach (BeneficioClass g in listaBeneficiario)
                        {
                            if (listaB.Contains(g))
                            {
                            }
                            else
                            {
                                listaB.Add(g);
                            }
                        }
                    }


                    BeneficioClass ben = listaB.Find(b => b.Id_beneficio == f.id_beneficio);

                    if (ben != null)
                    {
                        agregar = true;
                    }

                    break;
                }

                if (agregar)
                {
                    x = new BeneficioClass();

                    x._id_beneficio          = f.id_beneficio;
                    x._descripcion_beneficio = f.descripcion;
                    x._nombre_beneficio      = f.nombre;

                    r.Add(x);
                }
            }

            return(r);
        }