none
Select dinâmico RRS feed

  • Pergunta

  • Olá para todos, preciso montar uma consulta dinâmica que funciona da seguinte maneira:

    function blahblah(estados as Estado())
    
           Dim retorno As Pedido() = Pedido.FindAll().Where(Function(x) x.Estado = )
    
    end function
    
    
    Então. nessa função (demonstrativa) eu recebo uma lista de estados. Minha busca consiste em buscar todos os pedidos com estado iguais aos que constam na lista.
    Ficaria tipo assim:

    Dim retorno as Pedido() = Pedido.FindAll().Where(Function(x) x.Estado = estados(0)).OrWhere(Function(x) x.Estado = estados(1))....

    Como posso resolver o problema? Obrigado a todos!
    segunda-feira, 8 de março de 2010 19:06

Respostas

  • mkoka,

    Creio que você queira fazer isto:

    Dim retorno as Pedido() = Pedidos.Where(p => Estados.Contains(p.Estado)).ToList() -- se houver algum erro aqui desculpe-me. Não estou habituado a sintaxe do VB.

    Assumindo que Estados (o parâmetro de entrada) seja uma lista de Estado e Pedidos possua uma propriedade Estado.

    Não se esqueça que se Estado for um reference type é possível que a verificação Estados.Contains(p.Estado) retorne false quando o resultado esperado é true.

    Allan
    • Marcado como Resposta mkoka segunda-feira, 15 de março de 2010 20:00
    segunda-feira, 8 de março de 2010 19:32

Todas as Respostas

  • mkoka,

    Creio que você queira fazer isto:

    Dim retorno as Pedido() = Pedidos.Where(p => Estados.Contains(p.Estado)).ToList() -- se houver algum erro aqui desculpe-me. Não estou habituado a sintaxe do VB.

    Assumindo que Estados (o parâmetro de entrada) seja uma lista de Estado e Pedidos possua uma propriedade Estado.

    Não se esqueça que se Estado for um reference type é possível que a verificação Estados.Contains(p.Estado) retorne false quando o resultado esperado é true.

    Allan
    • Marcado como Resposta mkoka segunda-feira, 15 de março de 2010 20:00
    segunda-feira, 8 de março de 2010 19:32
  • Então, só pra ficar mais claro as informações.

    Pedido possui um Estado, que é um enum.
    Essa function é para me retornar uma lista de pedidos dado uma lista de Estados.
    Desculpe não ter descrito muito bem o problema .
    terça-feira, 9 de março de 2010 17:13
  • Prezado,

    Alguma novidade quanto a essa sua dúvida?
    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    sábado, 13 de março de 2010 20:47
    Moderador
  • Aew funcionou com a sua idéia Allan!
    ficou assim:

            Dim query = (From p In session.Linq(Of Classe)() Select p _
                         Where caracteristicas.Contains(p.Estado)).ToList

    Vlw pela ajuda!
    segunda-feira, 15 de março de 2010 20:01