none
Existe un Case en Linq ??? RRS feed

  • Pregunta

  •  

    hola, estube buscando y no encuentro manera de hacer un case utilizando linq

    mi consulta es la sig:

    var query = from u in dc.usuarios
    select new { u.id, u.nombUsuario, u.categoria};

    ahora, el problema es q categoria es entero, y quiero q cuando sea 0 diga "categoria cero" y cuando sea 1 diga "categoria uno" para enlazarlo en un gridview.
    pero no encuentro la forma de hacerlo.

    Aclaro que soy nuevo en linq.

     

    Muchas gracias por su ayuda.

    viernes, 15 de febrero de 2008 16:12

Todas las respuestas



  • Code Snippet

    var query = from u in dc.usuarios
    select new { u.id, u.nombUsuario,

                 u.categoria == 0?"categoria 0":"categoria 1"

                };

     

     

    viernes, 15 de febrero de 2008 16:25
  • "Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access. "

     

     me da ese error cuando hago lo q me dices.

     

    Pero aparte creo q el operador condicional ?: es booleano, y no podria hacer lo de las categorias con mas de 2 tipos, por lo que no es lo que necesito ( tengo mas de 2 tipos de cat, perdon por no decirlo en el ejemplo).

     

     Igual me gustaria saber por q da ese error al compilar,

     

    Muchas gracias por tu ayuda Juan Carlos.

    viernes, 15 de febrero de 2008 20:13
  • Claro.... bueno presumo que fue por esto

     

    Code Snippet

    var query = from u in dc.usuarios
    select new { u.id, u.nombUsuario,

                 string categoria = u.categoria == 0?"categoria 0":"categoria 1"

                };

     

    O bien:
     
    Code Snippet

    var query = from u in dc.usuarios
    select new { u.id, u.nombUsuario,

                 categoria = u.categoria == 0?"categoria 0":"categoria 1"

                };

     

     

    Perdon por la adivinanza pero es que ando de afanes  :S
     
     
     
    viernes, 15 de febrero de 2008 20:28
  •  

    Gracias Juan carlos, ahora si funciono, pero esto sigue sin ser un case, ya que solo puedo colocar valores por el verdadero o por el falso de la condicion.

     

    Si quisiera un case con 3 casos posibles nopodria hacerlo de esta forma. o estoy equivocado???

    lunes, 18 de febrero de 2008 16:43
  • si se puede...

    pero en esta instancia seria mejor utilizar una funcion que te haga ese calculo y asignar asi:

    Code Snippet

     

     

    var query = from u in dc.usuarios
    select new { u.id, u.nombUsuario,

                 categoria = MisFuciones.CalcularCategoria(u.categoria)

                };

     

     

    No olvides marcar como correctas todas las respuestas que te hayan sido de ayuda.

    Juan Carlos Ruiz Pacheco
    Core Group BogotaDotNet
    DCE 2005 -
    MCP, OCA, OCP
    Visita Mi Blog Técnico, Blog Personal

    lunes, 18 de febrero de 2008 16:49