public AnexGRIDResponde ListarGrilla(int id, AnexGRID grilla) { try { using (var db = new ModeloDatos()) { grilla.Inicializar(); var query = db.Curso.Include("Ciclo").Where(x => x.curso_cod != "" || x.curso_cod != null).Where(x => x.plan_id == id); if (grilla.columna == "curso_cod") { query = grilla.columna_orden == "DESC" ? query.OrderByDescending(x => x.curso_cod) : query.OrderBy(x => x.curso_cod); } if (grilla.columna == "ciclo_id") { query = grilla.columna_orden == "DESC" ? query.OrderByDescending(x => x.ciclo_id) : query.OrderBy(x => x.ciclo_id); } if (grilla.columna == "nombre") { query = grilla.columna_orden == "DESC" ? query.OrderByDescending(x => x.nombre) : query.OrderBy(x => x.nombre); } if (grilla.columna == "prerequisito") { query = grilla.columna_orden == "DESC" ? query.OrderByDescending(x => x.prerequisito) : query.OrderBy(x => x.prerequisito); } // Filtrar foreach (var f in grilla.filtros) { if (f.columna == "nombre" && f.valor != "") { query = query.Where(x => x.ciclo_id.ToString() == f.valor); } if (f.columna == "nombrecurso") { query = query.Where(x => x.nombre.StartsWith(f.valor)); } } var curso = query.Skip(grilla.pagina) .Take(grilla.limite) .ToList(); var total = query.Count(); grilla.SetData(from s in curso select new { s.curso_cod, s.Ciclo.nombre, nombrecurso = s.nombre, s.prerequisito }, total); } } catch (Exception e) { throw; } return(grilla.responde()); }