J'essaie de faire une comparaison similaire basée sur un paramètre extérieur (transmis par un formulaire de recherche) qui détermine le type de comparaison ( Je pensais dans la direction suivante: p> comme méthode similaire que sur la base de type sélectionné retourner
Ma connaissance des expressions est apparemment loin de Génial, car je n'ai pas pu construire une méthode qui pourrait générer le résultat droit (comparaison du côté serveur en SQL comme avec "% string" code> ou
"string%" code> ou
"% string%" code>)
.startswith () code> ou
.WSwith () code> ou
.Substring () code> p>
StartSwith code> méthode). P> P>
4 Réponses :
Vous ferez mieux d'utiliser Regex a> pour résoudre ce problème. P>
Cela n'entraînerait pas une base de données comme opérateur, que je pense que l'OP désire
On dirait que vous devriez vouloir utiliser:
query = query.Where( Entity.StringProperty.StartsWith("SearchString") )
C'est exactement ce que j'avais à l'esprit, merci. J'avais déjà quelque chose de similaire déjà écrit, mais cela n'a pas traduit par SQL. Par exemple, cela a fonctionné si je l'ai fait directement:
CompMethod("BaseString","SearchString",SelectedComparsionType.EndsWith)
le moyen facile strong> il suffit d'utiliser p> la voie difficile forte> p> Si vous voulez faire quelque chose comme cela, assurez-vous que votre fournisseur de Linq peut être informé de cette nouvelle méthode et comment elle se traduit par SQL (improbable) ou empêche votre méthode d'atteindre le fournisseur LINQ et fournissez quelque chose à ce que Cela comprend (dur). Par exemple, au lieu de p> , vous pouvez créer quelque chose comme p> avec le code suivant p> var query = from e in source.WhereLike(
e => e.StringProperty, "SearchString", comparsionType)
where e.OtherProperty == 123
orderby e.StringProperty
select e;
Ruben: phénoménal, c'est un enfer d'une explication - complète, compréhensible, approfondie et exactement ce que je cherchais, merci. Je voudrais également remercier les autres pour leur aide.