none
LINQ To SQL Consulta dinâmica RRS feed

  • Pergunta

  • Olá pessoal bom dia,

    Gostaria de saber se tem como fazer consulta dinâmica no LINQ TO SQL? algo do tipo

    public IQueryable retornaDados(string idTipos, string idBairros, string caracteristicas, double precoMin, double Preco Max)
    {

                    var dados = from IMOVEL in db.IMOVELs
                                      Where IMOVEL.TIPO_IMOVEL IN(idtipos) && IMOVEL.CEP_BAIRRO IN(idBairros) 
                                    
                                       If(caracteristicas != "")
                                       {
                                          &&  IMOVEL.CARACTERISTICAS IN(caracteristicas)
                                       }
                                       if(precoMin != 0)
                                       {
                                              && IMOVEL.PRECO == precoMin
                                        }
                                       else if(precoMax !=0)
                                       {
                                              && IMOVEL.PRECO == precoMax

                                        }
                                       else
                                       {
                                              && IMOVEL.PRECO BETWEEN precoMIN && PrecoMax
                                       }
                                  select new
                                  {
                                              CAMPO1
                                              CAMPO2
                                   };
               return dados;
    }

    tem como fazer uma consulta desse tipo deixando ela dinãmica? Porque existem campos dp formulário que o usuário pode opatar por passar de parãmetro para a busca ou não. ai preciso fazer algo dinãmico mas não sei como fazer, deixo resaltado que o que escrevi acima foi só para ilustrar minha necessidade de forma nenhuma arriscaria implementar isso. Mas o que quero saber  é se tem como fazer uma consulta desse tipo, outra coisa coisa, como seria Between e IN no LINQ To SQL?

    desde já agradeço
    Se chiar resolvesse sal de fruta não morria afogado
    sexta-feira, 4 de dezembro de 2009 12:33

Respostas

  • Da sim segue um exemplo

    public List<Client> Get( int? clientID , short? companyID , bool? deleted , string name )
            {
                try
                {
                    var query = from client in Factory.Create().GetClient()
                                where ((clientID == null) || (client.ClientID == clientID))
                                && ((companyID == null) || (client.Company.CompanyID == companyID))
                                && ((deleted == null) || (client.Deleted == deleted))
                                && (String.IsNullOrEmpty(name) || client.Name.Contains(name))

                                select client;

                    return query.ToList();         



                }
                catch( Exception )
                {
                    throw;
                }
            }
    • Sugerido como Resposta kauebranco sexta-feira, 4 de dezembro de 2009 15:18
    • Marcado como Resposta EndersonBH sexta-feira, 4 de dezembro de 2009 19:37
    sexta-feira, 4 de dezembro de 2009 13:02
    Moderador
  • Isso mesmo se passar null ele não busca.
    • Marcado como Resposta EndersonBH segunda-feira, 21 de junho de 2010 13:39
    sexta-feira, 4 de dezembro de 2009 15:17
    Moderador

Todas as Respostas

  • Da sim segue um exemplo

    public List<Client> Get( int? clientID , short? companyID , bool? deleted , string name )
            {
                try
                {
                    var query = from client in Factory.Create().GetClient()
                                where ((clientID == null) || (client.ClientID == clientID))
                                && ((companyID == null) || (client.Company.CompanyID == companyID))
                                && ((deleted == null) || (client.Deleted == deleted))
                                && (String.IsNullOrEmpty(name) || client.Name.Contains(name))

                                select client;

                    return query.ToList();         



                }
                catch( Exception )
                {
                    throw;
                }
            }
    • Sugerido como Resposta kauebranco sexta-feira, 4 de dezembro de 2009 15:18
    • Marcado como Resposta EndersonBH sexta-feira, 4 de dezembro de 2009 19:37
    sexta-feira, 4 de dezembro de 2009 13:02
    Moderador
  • Olá Seilor obrigado por responder,

    Se eu validar se campo for == null ele não iria buscar do mesmo jeito? o que quero fazer é desconsiderar os campos que ele não marcou e não passá-los para a consulta, no seu exemplo ele faz é isso mesmo?


    Se chiar resolvesse sal de fruta não morria afogado
    sexta-feira, 4 de dezembro de 2009 14:13
  • Isso mesmo se passar null ele não busca.
    • Marcado como Resposta EndersonBH segunda-feira, 21 de junho de 2010 13:39
    sexta-feira, 4 de dezembro de 2009 15:17
    Moderador