none
Error Tipo anónimo con LINQ RRS feed

  • Pregunta

  • Buenas a todos,

    Antes que nada agradezco la atención a la presente, tengo un error al declarar un tipo anonimo en una consulta linq para mi aplicacion web MVC, voy a utilizar un snipet que arma un tree-view y requiero serializar mi conusulta en un JSON. En esta consulta requiero incluir un objeto con clave "cheked" y valor true/false. solo que al declarar la palabra "cheked" arroja un error:

    "Declarador de miembro de tipo anónimo no válido. Los miembros de tipo anónimo deben declararse con una asignación de miembro, un nombre simple o un acceso al miembro."

    Se puede usar esa palabra? o alguna idea de como poder serializar correctamente mi consulta. Adjunto el código de la consulta:

    var tree = db.Permiso
                    .Where(modulo => modulo.Tipo == "MODULO")
                    .Select(modulo => new
                    {
                        modulo.PermisoId,
                        text = modulo.Nombre,
                        state = new { checked = true }, ==> ERROR Aqui
                        nodes = modulo.Nodos
                        .Where(seccion => seccion.Padre == modulo.PermisoId)
                        .Select(seccion => new
                        {
                            seccion.PermisoId,
                            seccion.Padre,
                            text = seccion.Nombre,
                            nodes = seccion.Nodos
                            .Where(accion => accion.Padre == seccion.PermisoId)
                            .Select(accion => new
                            {
                                accion.Padre,
                                accion.PermisoId,
                                text = accion.Nombre
                            })
                        })
                    });

    Gracias de antemano.

    miércoles, 17 de junio de 2015 21:53

Respuestas

  • var tree = db.Permiso
                     .Where(modulo => modulo.Tipo == "MODULO")
                     .Select(modulo => new
                     {
                         modulo.PermisoId,
                         text = modulo.Nombre,
                        state = new { @checked = true }, ==> ERROR Aqui
                         nodes = modulo.Nodos
                         .Where(seccion => seccion.Padre == modulo.PermisoId)
                         .Select(seccion => new
                         {
                             seccion.PermisoId,
                             seccion.Padre,
                             text = seccion.Nombre,
                             nodes = seccion.Nodos
                             .Where(accion => accion.Padre == seccion.PermisoId)
                             .Select(accion => new
                             {
                                 accion.Padre,
                                 accion.PermisoId,
                                 text = accion.Nombre
                             })
                         })
                     });

    Hola Carlos,

    checked es una palabra reservada en C#. Te recomendaría utilizar otro nombre de propiedad diferente.

    Si aún así quieres utilizar checked puedes hacerlo anteponiendo una @ al nombre:

    miércoles, 17 de junio de 2015 22:04

Todas las respuestas

  • var tree = db.Permiso
                     .Where(modulo => modulo.Tipo == "MODULO")
                     .Select(modulo => new
                     {
                         modulo.PermisoId,
                         text = modulo.Nombre,
                        state = new { @checked = true }, ==> ERROR Aqui
                         nodes = modulo.Nodos
                         .Where(seccion => seccion.Padre == modulo.PermisoId)
                         .Select(seccion => new
                         {
                             seccion.PermisoId,
                             seccion.Padre,
                             text = seccion.Nombre,
                             nodes = seccion.Nodos
                             .Where(accion => accion.Padre == seccion.PermisoId)
                             .Select(accion => new
                             {
                                 accion.Padre,
                                 accion.PermisoId,
                                 text = accion.Nombre
                             })
                         })
                     });

    Hola Carlos,

    checked es una palabra reservada en C#. Te recomendaría utilizar otro nombre de propiedad diferente.

    Si aún así quieres utilizar checked puedes hacerlo anteponiendo una @ al nombre:

    miércoles, 17 de junio de 2015 22:04
  • Excelente Asier, Gracias de nuevo
    miércoles, 17 de junio de 2015 22:31