Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mauroshikay

Linq to Entities mysql e regexp

Recommended Posts

Olá a todos, estou usando o linq to entities com mysql e até agora estava tudo funcionando, mas surgiu uma necessidade de usar o regexp do mysql ou o rlike

tentei fazer isto usando o namespace Regxp do c# mas está com um erro que não entendi, olha so como estou fazendo:

 Regex searchTerm = new Regex(@"(entrega|gas|Avenida).*");
           var telefones = (from t in tel.telefone
                            where searchTerm.IsMatch(t.Tel_empresa)
                            select t).ToList();

não da erro de compilação, mas quando executo, olha só:

 

[NotSupportedException: LINQ to Entities não reconhece o método 'Boolean IsMatch(System.String)', que não pode ser convertido em uma expressão de armazenamento.]
   System.Data.Objects.ELinq.DefaultTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) +87
   System.Data.Objects.ELinq.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) +321
   System.Data.Objects.ELinq.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) +51
   System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) +574
   System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input) +123
   System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input, DbExpressionBinding& binding) +85
   System.Data.Objects.ELinq.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda) +73
   System.Data.Objects.ELinq.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) +39
   System.Data.Objects.ELinq.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) +10
   System.Data.Objects.ELinq.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) +98
   System.Data.Objects.ELinq.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) +51
   System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) +574

Já procurei por tudo no google, mas não achei nada que realmente ajude!

 

Alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

[NotSupportedException: LINQ to Entities não reconhece o método 'Boolean IsMatch(System.String)', que não pode ser convertido em uma expressão de armazenamento.]

 

 

Como a mensagem já diz, a função lambda não suporta o método. você terá que utilizar outra forma de fazer isso, sem a função IsMatch.

Não conheço muito regex, mas pelo que entendi a tua função verifica se a string possui uma das tres palavras, eh isso? se for você pode usar String.Contains() ao invez dela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Danimar, obrigado pela ajuda, eu tentei com contains mas não me retorna nada :( e o pior que existem estes dados, olha só como fiz:

 

var telefones = (from t in tel.telefone
                            where (t.Tel_empresa.Contains("%entrega%gas%avenida%")) || 
                            (t.Tel_tags.Contains("%entrega%gas%avenida%")) ||
                            (t.Tel_endereco.Contains("%entrega%gas%avenida%%"))
                            select t).ToList();

Não sei onde posso estar errando :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Mauro.

Tente assim:

string[] searchTerm = new string[]{ "entrega", "gas", "Avenida"};
        	var telefones = (from t in tel.telefone
                         	where searchTerm.Contains(t.Tel_empresa)
                         	select t).ToList();

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.