none
Concatenar RRS feed

  • Pregunta

  • Hola, muy buenas !!

    Estoy intentando:

    Tras hacer mi consulta linq,

    visitas c = new visitas(){
                    ApellidoEmpleadoList = new SelectList(consultaUbicacion, "cod_usuario", "Apellidos"),

                  .
                  .

    }

    Me muestra correctamente en mi dropDownList los apellidos, pero, sería posible que mostrase los apellidos (que estan en un campo de la tabla) seguido de una coma y el nombre (que estan en otro campo de la tabla) ?? Gracias!!


    Jose

    lunes, 11 de enero de 2016 9:24

Respuestas

  • Vale, estás utilizando LINQ to Entities. Entonces LINQ intenta convertir la consulta a sentencias SQL y no todas las funciones están soportadas.

    Prueba con:

                var apellidoNombre = consultaUbicacion.AsEnumerable().Select(a => new { cod_usuario = a.cod_usuario, nombre = string.Format("{0}, {1}", a.Apellidos, a.NombreDeLaPropiedadConElNombre) });
                ApellidoEmpleadoList = new SelectList(apellidoNombre, "cod_usuario", "nombre");


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    lunes, 11 de enero de 2016 11:01
  • Jose, yo he puesto "a.Nombre" como ejemplo. Tú tendrías que reemplazarlo por el nombre de la propiedad en el que esté almacenado el nombre del empleado en los elementos de consultaUbicacion.

    Como comenta Sergio, la interpolación de cadenas está disponible a partir de C# 6.0. Si estás utilizando una versión anterior del compilador de C# puedes reemplazarlo por un string.Format:

                var apellidoNombre = consultaUbicacion.Select(a => new { cod_usuario = a.cod_usuario, nombre = string.Format("{0}, {1}", a.Apellidos, a.NombreDeLaPropiedadConElNombre) });
                ApellidoEmpleadoList = new SelectList(apellidoNombre, "cod_usuario", "nombre");


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    lunes, 11 de enero de 2016 10:29

Todas las respuestas

  • Pero necesitas que en la consulta este definido como un campo.

    Puedes crear una nueva enumeración con los campos que necesitas:

                var apellidoNombre = consultaUbicacion.Select(a => new { cod_usuario = a.cod_usuario, nombre = $"{a.Apellidos}, {a.Nombre}" });
                ApellidoEmpleadoList = new SelectList(apellidoNombre, "cod_usuario", "nombre");
    


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    lunes, 11 de enero de 2016 9:40
  • Hola Asier... 

    Esa nomenclatura que has propuesto  nombre = $"{a.Apellidos}, {a.Nombre}" }) 

    No aplica a la versión 6.0 de C# (string interpolation) en VS 2015? 

    Lo comento porque Jose no ha especificado la versión de VS sobre la que trabaja ;)


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    lunes, 11 de enero de 2016 10:10
    Moderador
  • (a => new { cod_usuario = a.cod_usuario, nombre = $ "{a.Apellidos}, {a.Nombre}" }); ¿? en el controlador ¿?

    no me funciona


    Jose

    lunes, 11 de enero de 2016 10:14
  • si, perdón por no especificar la ver versión, no sabía que influyera, estoy con la última supongo.

    Jose

    lunes, 11 de enero de 2016 10:27
  • Jose, yo he puesto "a.Nombre" como ejemplo. Tú tendrías que reemplazarlo por el nombre de la propiedad en el que esté almacenado el nombre del empleado en los elementos de consultaUbicacion.

    Como comenta Sergio, la interpolación de cadenas está disponible a partir de C# 6.0. Si estás utilizando una versión anterior del compilador de C# puedes reemplazarlo por un string.Format:

                var apellidoNombre = consultaUbicacion.Select(a => new { cod_usuario = a.cod_usuario, nombre = string.Format("{0}, {1}", a.Apellidos, a.NombreDeLaPropiedadConElNombre) });
                ApellidoEmpleadoList = new SelectList(apellidoNombre, "cod_usuario", "nombre");


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    lunes, 11 de enero de 2016 10:29
  • ERROR:

    LINQ to Entities no reconoce el método 'System.String Format(System.String, System.Object, System.Object)' del método, y este método no se puede traducir en una expresión de almacén.

    No sé en qué me puedo estar equivocando. :(


    Jose

    lunes, 11 de enero de 2016 10:44

  •             var consultaUbicacion = from a in db.ubicacion_usuarios 
                                        join x in db.usuarios on a.cod_usuario equals x.cod_usuario 
                                        where a.cod_sede == 1 orderby(x.Apellidos) select x;
    
    
                var apellidoNombre = consultaUbicacion.Select(a => new { cod_usuario = a.cod_usuario, nombre = string.Format("{0}, {1}", a.Apellidos, a.Nombre) });
    
                visitas c = new visitas(){
                      
                    ApellidoEmpleadoList = new SelectList(apellidoNombre, "cod_usuario", "nombre"),

    Qué hago mal?

    Jose

    lunes, 11 de enero de 2016 10:59
  • Vale, estás utilizando LINQ to Entities. Entonces LINQ intenta convertir la consulta a sentencias SQL y no todas las funciones están soportadas.

    Prueba con:

                var apellidoNombre = consultaUbicacion.AsEnumerable().Select(a => new { cod_usuario = a.cod_usuario, nombre = string.Format("{0}, {1}", a.Apellidos, a.NombreDeLaPropiedadConElNombre) });
                ApellidoEmpleadoList = new SelectList(apellidoNombre, "cod_usuario", "nombre");


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    lunes, 11 de enero de 2016 11:01
  • Asier!!! G R A C I A S !!!! G R A C I A S !!!! G R A C I A S !!!!

    Funciona correctamente!!


    Jose

    lunes, 11 de enero de 2016 11:05