Usuário com melhor resposta
Realizar Query com Like para campo integer

Pergunta
-
Boa noite pessoal,
Estou aqui na batalha já a algumas horas e pesquisei muito antes de fazer a pergunta aqui no forum, porém até o momento não consegui resolver meu problema.
A questão é simples, mas não consigo ver o resultado.
Necessito que uma Expressão Linq seja utilizada fazendo Like em um campo da minha tabela, porém o campo é Int, com isso não consigo realizar a consulta.
Segue abaixo trecho do meu código, um funcionando com campo varchar e outro com problema sendo o campo int:
//busca com string from c in Banco<Clientes>.List() where c.Nome.Contains(pesquisa) select c; //busca com int from c in Banco<Clientes>.List() where c.Telefone.ToString().Contains(pesquisa) select c;
A busca com int retorna:
LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.Sugestões?
Victor Santos
Email: victor@webfinal.com.br
MSN: victor.desenv@gmail.com
Skype: victor.santoss
WebFinal - www.webfinal.com.br
Blog: www.webfinal.com.br/blog/
Respostas
-
Amigo, so encontro uma solução para o seu caso agora que é utilizando Entity SQL. Tem coisas que o LINQ faz para você, para todas as outras existe o Entity SQL
por exemplo:
var query = Banco<Clientes>.Where(string.Format("cast(it.Telefone as System.String) like '%{0}%'", pesquisa), new ObjectParameter[] { });
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :)- Marcado como Resposta VictorSantos terça-feira, 15 de março de 2011 18:12
Todas as Respostas
-
Victor,
Veja se isto te ajuda:
http://stackoverflow.com/questions/1066760/problem-with-converting-int-to-string-in-linq-to-entities
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
Olá Victor,
Eu escrevi um post de como fazer um Select IN com o LINQ, e no meu exemplo estou fazendo com Int.
De uma olhada, acho que pode te ajudar: http://rodolphosa.blogspot.com/2011/03/select-in-com-linq-entity-framework.html#links
Rodolpho Sá
http://rodolphosa.blogspot.com/ -
Rodolpho,
Acredito que o o que o Victor está querendo é um pouquinho diferente... Ele está querendo fazer o correspondente de um SELECT utilizando LIKE em um campo INT... Algo como:
SELECT * FROM TABELA WHERE CAMPOINT LIKE '%15%'
André Alves de Lima
Microsoft MVP - Client App Dev
Visite o meu site: http://www.andrealveslima.com.br
Me siga no Twitter: @andrealveslima -
Amigo, so encontro uma solução para o seu caso agora que é utilizando Entity SQL. Tem coisas que o LINQ faz para você, para todas as outras existe o Entity SQL
por exemplo:
var query = Banco<Clientes>.Where(string.Format("cast(it.Telefone as System.String) like '%{0}%'", pesquisa), new ObjectParameter[] { });
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Se for útil marque como resposta e faça um Developer feliz :)- Marcado como Resposta VictorSantos terça-feira, 15 de março de 2011 18:12
-
Boa tarde amigos,
Desculpem pela demora em responder o tópico.
Fiz o teste com a solução do Olavo usando Entity SQL e deu certo!
Agradeço a todos pela ajuda.
Victor Santos
Email: victor@webfinal.com.br
MSN: victor.desenv@gmail.com
Skype: victor.santoss
WebFinal - www.webfinal.com.br
Blog: www.webfinal.com.br/blog/ -
Andre,
Verdade, acabei me confundindo.
Mais a solução do Olavo foi muito bacana!
Valeu!
Rodolpho Sá
http://rodolphosa.blogspot.com/