Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 20728|Répondre: 0

[Source] Comme une requête floue dans Linq vers SQL

[Copié le lien]
Publié sur 07/09/2015 23:16:28 | | |
Le fonctionnement de Like est un peu semblable, mais la direction a changé. Qu’est-ce que cela signifie ? Vous donnez une chaîne et cherchez un champ dans les données qui contient cette chaîne. C’est-à-dire qu’une chaîne donnée est un sous-ensemble d’un corps. SQL scrip{filter}t est écrit comme ceci.


Sélectionnez * à partir du tableau où j’aimerais ' %AD %'
Sélectionnez * de la table où j’aimerais ' %AD'
Sélectionnez * depuis la table où j’aimerais 'AD %'
Le pourcentage ci-dessus est un joker, indiquant que le champ contient une valeur, et que la position inconnue est remplacée par des %. La première consiste à indiquer que la section centrale est AD, et que les deux extrémités ne sont pas claires. Le second est AD à la fin, et le précédent n’est pas clair. Le troisième, au contraire, commence par AD et se termine de manière floue. L’instruction Linq correspondante est la suivante :


var q = (de c dans db. Clients
où c.CustomerID.Contains(« ROUT »)
sélectionnez c). ToList() ;
Le SQL qu’il génère est


SELECT [t0]. [CustomerID], [t0]. [NomDel’entreprise], [t0]. [ContactName], [t0]. [ContactT
itle], [t0]. [Adresse], [t0]. [Ville], [t0]. [Région], [t0]. [Code postal], [t0]. [Conseiller
try], [t0]. [Téléphone], [t0]. [Fax]
DE [dbo]. [Clients] AS [t0]
OÙ [t0]. [CustomerID] COMME @p0
-- @p0 : Chaîne d’entrée (taille = 6 ; Prec = 0 ; Balance = 0) [ %ROUT %]
Pour terminer avec ISSA, en tête de la carte joker :


var q = (de c dans db. Clients
où c.CustomerID.EndsAvec(« ISSA »)
sélectionnez c). ToList() ;
Le SQL qu’il génère est


SELECT [t0]. [CustomerID], [t0]. [NomDel’entreprise], [t0]. [ContactName], [t0]. [ContactT
itle], [t0]. [Adresse], [t0]. [Ville], [t0]. [Région], [t0]. [Code postal], [t0]. [Conseiller
try], [t0]. [Téléphone], [t0]. [Fax]
DE [dbo]. [Clients] AS [t0]
OÙ [t0]. [CustomerID] COMME @p0
-- @p0 : Chaîne d’entrée (taille = 5 ; Prec = 0 ; Échelle = 0) [ %ISSA]
En commençant par ARO, joker de queue :


var q = (de c dans db. Clients
où c.CustomerID.StartsWith(« ARO »)
sélectionnez c). ToList() ;
Le SQL qu’il génère est


SELECT [t0]. [CustomerID], [t0]. [NomDel’entreprise], [t0]. [ContactName], [t0]. [ContactT
itle], [t0]. [Adresse], [t0]. [Ville], [t0]. [Région], [t0]. [Code postal], [t0]. [Conseiller
try], [t0]. [Téléphone], [t0]. [Fax]
DE [dbo]. [Clients] AS [t0]
OÙ [t0]. [CustomerID] COMME @p0
-- @p0 : chaîne d’entrée (taille = 4 ; Prec = 0 ; Échelle = 0) [ARO %]

Linq propose également une méthode appelée SqlMethods.Like, qui nécessite d’ajouter d’abord l’espace de noms System.Data.Linq.SqlClient. Les trois ci-dessus peuvent s’écrire


var q = (de c dans db. Clients
où SqlMethods.Like(c.CustomerID, « %ROUT % »)
sélectionnez c). ToList() ;
Ici, vous devez remplir vous-même le joker pour dire à Linq comment vous avez été matché. Comme quoi


var q = (de c dans db. Clients
où SqlMethods.Like(c.CustomerID, « %ISSA »)
sélectionnez c). ToList() ;
Un autre exemple :


var q = (de c dans db. Clients
où SqlMethods.Like(c.CustomerID, « ARO % »)
sélectionnez c). ToList() ;
Ce qui est le plus incroyable avec SqlMethods, c’est que vous pouvez implémenter des jokers n’importe où avec vos propres expressions de jokers définies. Comme quoi


var q = (de c dans db. Clients
où SqlMethods.Like(c.CustomerID, « A %O %T »)
sélectionnez c). ToList() ;
Le SQL qu’il génère est


SELECT [t0]. [CustomerID], [t0]. [NomDel’entreprise], [t0]. [ContactName], [t0]. [ContactT
itle], [t0]. [Adresse], [t0]. [Ville], [t0]. [Région], [t0]. [Code postal], [t0]. [Conseiller
try], [t0]. [Téléphone], [t0]. [Fax]
DE [dbo]. [Clients] AS [t0]
OÙ [t0]. [CustomerID] COMME @p0
-- @p0 : Chaîne d’entrée (taille = 5 ; Prec = 0 ; Échelle = 0) [A %O %T]

La chose la plus standard est de savoir qu’elle commence par A et se termine par T, connaît une valeur O au milieu, et ne connaît rien d’autre. Utilise juste ça.
SQL Server définit quatre jokers, tous disponibles ici. Ce sont :
Exemple de caractère joker Descrip{filter}tion
% Toute chaîne de caractères zéro ou plus. OÙ un titre comme « %computer % » indique tous les titres de livres contenant le mot « ordinateur » n’importe où dans le titre.
_ (soulignement) N’importe quel caractère. OÙ au_fname COMME « _ean » trouve tous les prénoms de quatre lettres qui se terminent par ean (Dean, Sean, etc.).
[ ] Tout caractère unique dans la plage spécifiée ([a-f]) ou l’ensemble ([abcdef]). OÙ au_lname COMME « [C-P]arsen » trouve les noms de famille des auteurs se terminant par arsen et commençant par un caractère entre C et P, par exemple Carsen, Larsen, Karsen, etc.
[^] Tout caractère unique ne se trouvant pas dans la plage spécifiée ([^a-f]) ou dans l’ensemble ([^abcdef]). OÙ au_lname COMME 'de[^l] %' tous les noms de famille des auteurs commençant par de et où la lettre suivante n’est pas l.

% représente une chaîne de longueur nulle ou n’importe quelle longueur. _ indique un caractère. [] indique un caractère dans une plage de distance. [^] indique un caractère qui n’est pas dans une certaine plage
Comme quoi:


var q = (de c dans db. Clients
où SqlMethods.Like(c.CustomerID, « A_O_T »)
sélectionnez c). ToList() ;
Utilisez simplement _ pour représenter un personnage. Le SQL généré est :


SELECT [t0]. [CustomerID], [t0]. [NomDel’entreprise], [t0]. [ContactName], [t0]. [ContactT
itle], [t0]. [Adresse], [t0]. [Ville], [t0]. [Région], [t0]. [Code postal], [t0]. [Conseiller
try], [t0]. [Téléphone], [t0]. [Fax]
DE [dbo]. [Clients] AS [t0]
OÙ [t0]. [CustomerID] COMME @p0
-- @p0 : Chaîne d’entrée (taille = 5 ; Prec = 0 ; Échelle = 0) [A_O_T]

Pour le « Pas aimer », c’est aussi très simple, il suffit d’ajouter un non-sens.


var q = (de c dans db. Clients
où ! SqlMethods.Like(c.CustomerID, « A_O_T »)
sélectionnez c). ToList() ;

SqlMethods.Like possède également un paramètre appelé caractère d’échappement, qui sera transformé en une instruction comme la suivante.


SELECT colonnes FROM table WHERE
colonne LIKE ' %\ %%' ESCAPE '\'
Échaper est dû au fait qu’un champ contient des caractères spéciaux, tels que %,_ [ ], qui sont utilisés comme jokers. C’est là qu’intervient Escape. C’est un truc de SQL Server.





Précédent:Optimisation des performances du site web : explication détaillée des paramètres de contrôle du cache
Prochain:Ruijie a toujours été déterminée sur ce qui se passe
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com