public List <menu> MenusPorUsuario(usuario unUsuario) { Alineaciones(); TiposColumnas(); menu objeto = new menu(); List <menu> registros = new List <menu>(); using (ispDB db = new ispDB()) { if (unUsuario.administrador == true) { registros = db.menus.GroupJoin( db.menus, x => x.id, y => y.idpadre, (x, y) => new menu() { id = x.id, idpadre = x.idpadre, nombre = x.nombre, titulo = x.titulo, visible = x.visible, busqueda = x.busqueda, contenedor = x.contenedor, editable = true, formulario = x.formulario, icono = x.icono, modulo = x.modulo, piedetalle = x.piedetalle, tabla = x.tabla, Vinculado = (y.Count() == 0 ? false : true) }).GroupJoin(db.columnasgrids.OrderBy(x => x.identificador).ThenBy(x => x.orden), x => x.id, y => y.idmenu, (x, y) => new menu() { id = x.id, idpadre = x.idpadre, nombre = x.nombre, titulo = x.titulo, visible = x.visible, busqueda = x.busqueda, contenedor = x.contenedor, editable = x.editable, formulario = x.formulario, icono = x.icono, modulo = x.modulo, piedetalle = x.piedetalle, tabla = x.tabla, Vinculado = x.Vinculado, fkcolumnasgrid = y.ToList() }).ToList(); } else { registros = db.Query(new menu(), objeto.CadenaSelectAsignados(), new[] { new DataParameter("codigo", unUsuario.id) } ).Select(x => new menu() { id = x.id, idpadre = x.idpadre, nombre = x.nombre, titulo = x.titulo, visible = x.visible, busqueda = x.busqueda, contenedor = x.contenedor, editable = x.editable, formulario = x.formulario, icono = x.icono, modulo = x.modulo, piedetalle = x.piedetalle, tabla = x.tabla }).GroupJoin(db.columnasgrids.OrderBy(x => x.identificador).ThenBy(x => x.orden), x => x.id, y => y.idmenu, (x, y) => new menu() { id = x.id, idpadre = x.idpadre, nombre = x.nombre, titulo = x.titulo, visible = x.visible, busqueda = x.busqueda, contenedor = x.contenedor, editable = x.editable, formulario = x.formulario, icono = x.icono, modulo = x.modulo, piedetalle = x.piedetalle, tabla = x.tabla, Vinculado = x.Vinculado, fkcolumnasgrid = y.ToList() }).ToList(); } } this.ListaPadres = registros.OrderBy(x => x.nombre).Where(x => x.contenedor == true).ToList(); for (int i = 0; i < registros.Count; i++) { registros[i] = CargarRelaciones(registros[i]); } objeto = null; return(registros.OrderBy(x => x.nombre).ToList()); }