Comme opérateur dans Entity Framework?

.net entity-framework linq-to-entities sql-server

Question

Nous essayons d'implémenter l'opérateur "LIKE" dans Entity Framework pour nos entités avec des champs de chaîne, mais cela ne semble pas être pris en charge. Quelqu'un a-t-il essayé de faire quelque chose comme ça?

Cet article de blog résume le problème rencontré. Nous pourrions utiliser contient, mais cela ne correspond qu'au cas le plus trivial pour LIKE. La combinaison de contient, commence avec, termine avec et index nous amène là, mais nécessite une traduction entre les jokers standard et le code Linq to Entities

Réponse acceptée

Ceci est un ancien post maintenant, mais pour ceux qui cherchent la réponse, ce lien devrait vous aider.

Version courte:

Méthode SqlFunctions.PatIndex - renvoie la position de départ de la première occurrence d'un motif dans une expression spécifiée, ou un zéro si le motif n'est pas trouvé, sur tous les types de données texte et caractère valides

Espace de noms: System.Data.Objects.SqlClient Assembly: System.Data.Entity (dans System.Data.Entity.dll)

Un peu d'explication apparaît également dans ce fil de discussion .


Réponse populaire

Je ne connais vraiment rien à EF, mais dans LINQ to SQL, vous exprimez généralement une clause LIKE à l'aide de String.Contains:

where entity.Name.Contains("xyz")

Se traduit par

WHERE Name LIKE '%xyz%'

(Utilisez StartsWith et EndsWith pour un autre comportement.)

Je ne suis pas tout à fait sûr que cela soit utile, car je ne comprends pas ce que vous voulez dire lorsque vous dites que vous essayez de mettre en œuvre LIKE. Si j'ai complètement mal compris, faites le moi savoir et je supprimerai cette réponse :)



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi