none
Simplificar consulta RRS feed

  • Pergunta

  • Bom dia...

    Tem como eu declarar uma variável que receba qualquer coluna de uma query??

    Exemplo

    Select Case col
            Case Is = "Id" : query = From c In context.Produtores Order By c.Id Ascending Select c
            Case Is = "NomeProdutor" : query = From c In context.Produtores Order By c.NomeProdutor Ascending Select c
            Case Is = "Telefone" : query = From c In context.Produtores Order By c.Telefone Ascending Select c
            Case Is = "Celular" : query = From c In context.Produtores Order By c.Celular Ascending Select c
          End Select
    

     isso é o que eu faço hoje, pra cada coluna que o usuário clica ele ordena de acordo com a coluna.

    Eu queria simplificar isso tipo:

    Select Case col
            Case Is = "Id" : campo = c.id
            Case Is = "NomeProdutor" : campo = c.NomeProdutor
            Case Is = "Telefone" : campo = c.Telefone
            Case Is = "Celular" : campo = c.Celular
          End Select
          query = From c In context.Produtores Order By campo Ascending Select c
    

    Assim eu não precisaria criar uma consulta para cada campo..

    Obrigado pessoal..

     

    segunda-feira, 21 de março de 2011 14:26

Respostas

  • Amigo, tem horas que a utilização do LINQ complica algumas consultas.

    tente utilizar o Entity SQL, outra modalidade de consulta permitida para a Entity Framework, por exemplo

    string ordenador = "it.Id";
    
    ObjectQuery<Produtores> Produtores = new ObjectQuery<Produtores>("produtores", context);
    
    List<Produtores> produtoresOrdenados = Produtores.OrderBy(ordenador).ToList();
    
    //Outros ordenadores:
    string ordenador = "it.NomeProdutor";
    string ordenador = "it.Telefone";
    string ordenador = "it.Celular";
    
    


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Se for útil marque como resposta e faça um Developer feliz :)
    • Marcado como Resposta EvangelistaLion terça-feira, 22 de março de 2011 13:41
    terça-feira, 22 de março de 2011 12:44
    Moderador

Todas as Respostas

  • Amigo, tem horas que a utilização do LINQ complica algumas consultas.

    tente utilizar o Entity SQL, outra modalidade de consulta permitida para a Entity Framework, por exemplo

    string ordenador = "it.Id";
    
    ObjectQuery<Produtores> Produtores = new ObjectQuery<Produtores>("produtores", context);
    
    List<Produtores> produtoresOrdenados = Produtores.OrderBy(ordenador).ToList();
    
    //Outros ordenadores:
    string ordenador = "it.NomeProdutor";
    string ordenador = "it.Telefone";
    string ordenador = "it.Celular";
    
    


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Se for útil marque como resposta e faça um Developer feliz :)
    • Marcado como Resposta EvangelistaLion terça-feira, 22 de março de 2011 13:41
    terça-feira, 22 de março de 2011 12:44
    Moderador
  • Era isso mesmo Olavo....deu certo aqui.

    Você sabe me dizer o que representa o it na frente do campo??

    Muito obrigado...ajudou bastante




    terça-feira, 22 de março de 2011 13:41
  • O It serve principalmente para indicar que está coluna está dentro do escopo/contexto atual de consulta. se você tirar ele dai ou modificar irá ocorrer um erro em tempo de execução

    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Se for útil marque como resposta e faça um Developer feliz :)
    terça-feira, 22 de março de 2011 15:30
    Moderador