none
Múltiplos filtros em um form de consulta C# podendo o filtro estar vazio ou preenchido. RRS feed

  • Pergunta

  • Olá pessoal! surgiu a seguinte situação: Preciso realizar consultas no banco com 10 filtros, mas detalhe, o usuário pode selecionar 1 só filtro como pode selecionar todos, então, eu pensei,tenho que verificar quais filtros estão preenchidos pra realizar a consulta no banco...mas nessa situação eu teria que verificar todas as possibilidades de seleção dos campos de filtro para efetuar a consulta, ou seja, meu método iria ficar cheio de if e else....ficaria inviável! Existe alguma maneira de verificar dentro da consulta se o parâmetro(filtro) está vazio? Alguém sabe algum modo que eu possa fazer esse filtro de maneira mais simplificada? Obrigado!
    domingo, 13 de dezembro de 2015 20:26

Respostas

  • Boa noite.

    Com Entity fica relativamente simples, já que tu queres fazer em uma query só:

    var resultado = contexto.Tabela.Where(x => 
        (String.IsNullOrEmpty(filtro1) || x.Campo1.Contains(filtro1))
        && (String.IsNullOrEmpty(filtro2) || x.Campo2.Contains(filtro2)));
    // E por aí vai

    Talvez, como alternativa, seja interessante criar vários métodos (para Filtro1, Filtro2, Filtro3), e ir complementando o Where (com IQueryable) de acordo com a necessidade; neste caso, tu só faria um if para cada item de filtro, não para cada combinação possível.


    Att., Rafael Simor

    • Marcado como Resposta Marcos SJ segunda-feira, 14 de dezembro de 2015 12:01
    segunda-feira, 14 de dezembro de 2015 02:59