Usuário com melhor resposta
LINQ To SQL Consulta dinâmica

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
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
-
Isso mesmo se passar null ele não busca.
- Marcado como Resposta EndersonBH segunda-feira, 21 de junho de 2010 13:39
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
-
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 -
Isso mesmo se passar null ele não busca.
- Marcado como Resposta EndersonBH segunda-feira, 21 de junho de 2010 13:39