none
Mismo Nombre Columnas SELECT con LINQ RRS feed

  • Pregunta

  • Hola compaer@s,

    Tengo esta consulta LINQ:

     

     

    Dim restoDatosCliente = From cliente In

    entities.CLIENTE

     

    Where

    cliente.CLIENTE1 = A_Id

     

    Select

    cliente.SEXO1.DESCRIPCION,

    cliente.ORIENTACION1.DESCRIPCION,

    cliente.PEINADO1.DESCRIPCION,

    cliente.COLORPELO1.DESCRIPCION,

    cliente.COLOROJOS1.DESCRIPCION,

    cliente.ESTUDIO1.DESCRIPCION,

    cliente.PAIS1.NOMBRE,

    cliente.DESPLAZAMIENTO1.DESCRIPCION

    

    El problema es que tengo varias columnas que se llaman DESCRIPCION y el depurador me dice que ya hay una columna declarada como tal.

    Necesito saber como renombrar las columnas para poder hacer la consulta.

    Gracias de antemano.

    Un saludo


    Titus
    martes, 3 de enero de 2012 12:26

Respuestas

  • Hola,

    Prueba a utilizar la clausula Let:

     

     

    <pre>Dim restoDatosCliente = From cliente In
    
    entities.CLIENTE
    
     let Sexo = cliente.SEXO1.DESCRIPCION
    let Orientacion = cliente.ORIENTACION1.DESCRIPCION
    let Peinado = cliente.PEINADO1.DESCRIPCION
    let ColorPelo = cliente.COLORPELO1.DESCRIPCION
    let ColorOjos = cliente.COLOROJOS1.DESCRIPCION
    let Estudio = cliente.ESTUDIO1.DESCRIPCION
    let Desplazamiento = cliente.DESPLAZAMIENTO1.DESCRIPCION
    Where
    
    cliente.CLIENTE1 = A_Id
    
     
    
    Select
    
    Sexo,
    
    Orientacion,
    
    Peinado,
    
    ColorPelo,
    
    ColorOjos,
    
    Estudio,
    
    cliente.PAIS1.NOMBRE,
    Desplazamiento
    
    


    Javier Torrecilla
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    TabControl con Mejoras
    martes, 3 de enero de 2012 12:34
  • Como con la opcion de usar la sentencia "let" vas a devolver un tipo anonimo, quizas es mejor que directamente en el select devuelvas un tipo anonimo tal que asi:

    Dim restoDatosCliente = From cliente In
    
    entities.CLIENTE
    
    Where
    
    cliente.CLIENTE1 = A_Id
    
    
    Select New
    
    DescripcionSexo = cliente.SEXO1.DESCRIPCION,
    
    DescripcionOrientacion = cliente.ORIENTACION1.DESCRIPCION,
    
    (...)
    


    De esta forma no guardas ese resultado de forma temporal que es el uso que se le da al "let" en LINQ para realizar calculos y demas sobre una misma expresion sin tener que repetirla.

    La sintaxis en VB.NET quizas sea diferente, yo es que soy más de usar C#, pero imagino que sera algo parecido.

    En fin, tómalo como opción


    Vota mi respuesta si te ha sido útil. Gracias.
    sábado, 7 de enero de 2012 18:23

Todas las respuestas

  • Hola,

    Prueba a utilizar la clausula Let:

     

     

    <pre>Dim restoDatosCliente = From cliente In
    
    entities.CLIENTE
    
     let Sexo = cliente.SEXO1.DESCRIPCION
    let Orientacion = cliente.ORIENTACION1.DESCRIPCION
    let Peinado = cliente.PEINADO1.DESCRIPCION
    let ColorPelo = cliente.COLORPELO1.DESCRIPCION
    let ColorOjos = cliente.COLOROJOS1.DESCRIPCION
    let Estudio = cliente.ESTUDIO1.DESCRIPCION
    let Desplazamiento = cliente.DESPLAZAMIENTO1.DESCRIPCION
    Where
    
    cliente.CLIENTE1 = A_Id
    
     
    
    Select
    
    Sexo,
    
    Orientacion,
    
    Peinado,
    
    ColorPelo,
    
    ColorOjos,
    
    Estudio,
    
    cliente.PAIS1.NOMBRE,
    Desplazamiento
    
    


    Javier Torrecilla
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    TabControl con Mejoras
    martes, 3 de enero de 2012 12:34
  • Muchas gracias, justo ahora había encontrado la respuesta y la iba a subir.

     

    Gracias nuevamente.

     

    Un saludo.


    Titus
    martes, 3 de enero de 2012 12:38
  • Como con la opcion de usar la sentencia "let" vas a devolver un tipo anonimo, quizas es mejor que directamente en el select devuelvas un tipo anonimo tal que asi:

    Dim restoDatosCliente = From cliente In
    
    entities.CLIENTE
    
    Where
    
    cliente.CLIENTE1 = A_Id
    
    
    Select New
    
    DescripcionSexo = cliente.SEXO1.DESCRIPCION,
    
    DescripcionOrientacion = cliente.ORIENTACION1.DESCRIPCION,
    
    (...)
    


    De esta forma no guardas ese resultado de forma temporal que es el uso que se le da al "let" en LINQ para realizar calculos y demas sobre una misma expresion sin tener que repetirla.

    La sintaxis en VB.NET quizas sea diferente, yo es que soy más de usar C#, pero imagino que sera algo parecido.

    En fin, tómalo como opción


    Vota mi respuesta si te ha sido útil. Gracias.
    sábado, 7 de enero de 2012 18:23