Comment faire SQL Like % dans Linq?
J'ai une procédure SQL que je suis en train de tourner en Linq:
SELECT O.Id, O.Name as Organization
FROM Organizations O
JOIN OrganizationsHierarchy OH ON O.Id=OH.OrganizationsId
where OH.Hierarchy like '%/12/%'
La ligne je suis le plus intéressé est la suivante:
where OH.Hierarchy like '%/12/%'
J'ai une colonne qui contient la hiérarchie comme /1/3/12/par exemple, je viens de l'utiliser %/12/% pour le rechercher.
Ma question est, qu'est-ce que Linq ou .NET équivalent à l'utilisation du signe de pourcentage?
- Votre question a au moins
5
votes pour le comme opérateur de la balise. Pourrais-je vous prie de bien vouloir suggérer sql en tant que synonyme? - Bien sûr. Fait.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également utiliser
.StartsWith()
ou.EndsWith()
.Address1
n'existe pas dans votre rejoindre.StartsWith("abc")
est converti enLIKE 'abc%'
etEndsWith("abc")
est cnoverted àLIKE '%abc'
.ToLower().Contains()
, etc si vous voulez ignorer la casse. Si vous voulez que cela va bien sûr dépendre de ce que vous essayez d'imiter, d'un DB avec la casse de classement ou pas.L P
's réponse de plus. Dans certains cas, vous ne pouvez pas faire sans solutionUtiliser ceci:
SqlMethods
à l'aide de "point"?System.Data.Linq.SqlClient
espace de noms.System.Data.Linq
?Je suis en supposant que vous êtes à l'aide de Linq-to-SQL* (voir la note ci-dessous). Si oui, utilisez de la ficelle.Contient de la chaîne.StartsWith, et de la corde.EndsWith pour générer du code SQL utiliser l'opérateur LIKE de SQL.
ou
Remarque: * = si vous utilisez le ADO.Net Entity Framework (EF /L2E) dans .net 3.5, sachez qu'il ne fera pas la même traduction que Linq-to-SQL. Bien que L2S fait une traduction correcte, L2E v1 (3.5) va se traduire par un t-expression sql qui va forcer un full table scan sur la table que vous êtes l'interrogation à moins qu'il y a de mieux discriminateur dans votre clause where ou joindre des filtres.
Mise à jour: C'est corrigé dans la EF/L2E v4 (.net 4.0), donc, il va générer un SQL tels que, tout COMME L2S n'.
@
signe mais je réalise que j'ai peut-être une bonne convention à suivre.Si vous utilisez VB.NET, alors la réponse serait "*". Voici ce que votre clause where ressemblerait...
Note: "*" Correspond à zéro ou plusieurs caractères. Voici l'article de msdn pour l'opérateur Like.
Bien indexOf fonctionne pour moi aussi
En utilisant ce code
Dans le cas où vous ne correspondant pas à la, les chaînes numériques, toujours bon d'avoir des cas:
.NET de base a maintenant
EF.Functions.Like
Essayer, cela fonctionne très bien pour moi
Que je fais toujours ce:
Je sais que je n'utilisez pas l'instruction like, mais c'est du bon travail, dans le fond, c'est cela s'est traduit par une requête avec une déclaration.
Contient est utilisé dans Linq ,tout comme Comme est utilisé en SQL .
. . .
Vous pouvez écrire votre script SQL dans Linq comme Suit :
Pour ceux comment chute ici comme moi à la recherche d'un chemin à un "SQL Comme" méthode de LINQ, j'ai quelque chose qui fonctionne très bien.
Je suis dans un cas où je ne peut pas modifier la Base de données dans une manière de changer le classement de la colonne.
J'ai donc trouver un moyen dans mon LINQ pour le faire.
Je suis en utilisant la méthode d'assistance
SqlFunctions.PatIndex
sorcière agir de même à la real SQL COMME opérateur.J'ai d'abord besoin d'énumérer tous les possibles signes diacritiques (un mot que je viens d'apprendre, à la recherche de la valeur à obtenir quelque chose comme:
puis dans LINQ, par exemple:
Donc, pour mes besoins, j'ai écrit un Helper/méthode d'Extension
Si vous avez des suggestions pour améliorer cette méthode, je vais un plaisir de vous entendre.