Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 20728|Svar: 0

[Kilde] Som fuzzy query i Linq til SQL

[Kopier link]
Opslået på 07/09/2015 23.16.28 | | |
Virkemåden af Like er lidt som i, men retningen har ændret sig. Hvad betyder det? Du giver en streng og leder efter et felt i dataene, der indeholder denne streng. Det vil sige, en given streng er en delmængde af et legeme. SQL scrip{filter}t er skrevet sådan her.


Vælg * fra tabellen, hvor jeg kunne lide '%AD%'
Vælg * fra tabel, hvor jeg gerne vil have '%AD'
Vælg * fra tabel, hvor jeg kunne lide 'AD%'
Procenten ovenfor er et jokerkort, der angiver, at feltet indeholder en værdi, og den ukendte position erstattes af %. Den første er at angive, at midtersektionen er AD, og de to ender er uklare. Den anden er AD til sidst, og den forrige er uklar. Den tredje begynder derimod med AD og slutter uklart. Den tilsvarende Linq-sætning er:


var q = (fra c i db. Kunder
hvor c.CustomerID.Contains("ROUT")
vælg c). ToList();
Den SQL, den genererer, er


VÆLG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [KontaktNavn], [t0]. [KontaktT
itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmand]
prøv], [t0]. [Telefon], [t0]. [Fax]
FRA [dbo]. [Kunder] AS [t0]
HVOR [t0]. [Kunde-ID] KAN GODT LIDE @p0
-- @p0: Input-streng (størrelse = 6; Prec = 0; Skala = 0) [%UDKØRSEL%]
Afslutning med ISSA, hoved-wildcard:


var q = (fra c i db. Kunder
hvor c.CustomerID.EndsWith("ISSA")
vælg c). ToList();
Den SQL, den genererer, er


VÆLG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [KontaktNavn], [t0]. [KontaktT
itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmand]
prøv], [t0]. [Telefon], [t0]. [Fax]
FRA [dbo]. [Kunder] AS [t0]
HVOR [t0]. [Kunde-ID] KAN GODT LIDE @p0
-- @p0: Input-streng (størrelse = 5; Prec = 0; Skala = 0) [%ISSA]
Startende med ARO, hale-jokerkort:


var q = (fra c i db. Kunder
hvor c.CustomerID.StartsWith("ARO")
vælg c). ToList();
Den SQL, den genererer, er


VÆLG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [KontaktNavn], [t0]. [KontaktT
itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmand]
prøv], [t0]. [Telefon], [t0]. [Fax]
FRA [dbo]. [Kunder] AS [t0]
HVOR [t0]. [Kunde-ID] KAN GODT LIDE @p0
-- @p0: Inputstreng (størrelse = 4; Prec = 0; Skala = 0) [ARO%]

Linq tilbyder også en metode kaldet SqlMethods.Like, som kræver, at System.Data.Linq.SqlClient-navnerummet tilføjes først. De tre ovenstående kan skrives


var q = (fra c i db. Kunder
hvor SqlMethods.Like(c.CustomerID, "%ROUT%")
vælg c). ToList();
Her skal du selv udfylde jokerkortet for at fortælle Linq, hvordan I matchede. Som hvad


var q = (fra c i db. Kunder
hvor SqlMethods.Like(c.CustomerID, "%ISSA")
vælg c). ToList();
Et andet eksempel:


var q = (fra c i db. Kunder
hvor SqlMethods.Like(c.CustomerID, "ARO%")
vælg c). ToList();
Det mest fantastiske ved SqlMethods.Like er, at du kan implementere wildcards hvor som helst med dine egne definerede wildcard-udtryk. Som hvad


var q = (fra c i db. Kunder
hvor SqlMethods.Like(c.CustomerID, "A%O%T")
vælg c). ToList();
Den SQL, den genererer, er


VÆLG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [KontaktNavn], [t0]. [KontaktT
itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmand]
prøv], [t0]. [Telefon], [t0]. [Fax]
FRA [dbo]. [Kunder] AS [t0]
HVOR [t0]. [Kunde-ID] KAN GODT LIDE @p0
-- @p0: Input-streng (størrelse = 5; Prec = 0; Skala = 0) [A%O%T]

Det mest standard er at vide, at den starter med A og slutter med T, kender værdien O i midten, og ikke ved noget andet. Brug bare dette.
SQL Server definerer fire jokere, som alle er tilgængelige her. De er:
Eksempel på Wildcard-tegn Descrip{filter}tion
% Enhver streng med nul eller flere tegn. HVOR titel SOM '%computer%' finder alle bogtitler med ordet 'computer' hvor som helst i bogtitlen.
_ (understregning) Enhver enkelt karakter. HVOR au_fname KAN lide '_ean' finder alle firebogstavsfornavne, der ender på ean (Dean, Sean osv.).
[ ] Ethvert enkelt tegn inden for det specificerede interval ([a-f]) eller sæt ([abcdef]). HVOR au_lname LIGESOM '[C-P]arsen' finder forfatterens efternavne, der ender på arsen og begynder på et hvilket som helst enkelt tegn mellem C og P, for eksempel Carsen, Larsen, Karsen osv.
[^] Ethvert enkelt tegn, der ikke er inden for det specificerede interval ([^a-f]) eller sæt ([^abcdef]). HVOR au_lname SOM 'de[^l]%' alle forfatternavne, der begynder med de, og hvor det følgende bogstav ikke er l.

% repræsenterer en streng med nul længde eller enhver længde. _ indikerer en karakter. [] angiver et tegn i et rækkeviddeområde. [^] angiver et tegn, der ikke er inden for et bestemt område
Som hvad:


var q = (fra c i db. Kunder
hvor SqlMethods.Like(c.CustomerID, "A_O_T")
vælg c). ToList();
Brug bare _ til at repræsentere en karakter. Den genererede SQL er:


VÆLG [t0]. [KundeID], [t0]. [Firmanavn], [t0]. [KontaktNavn], [t0]. [KontaktT
itle], [t0]. [Adresse], [t0]. [By], [t0]. [Region], [t0]. [Postnummer], [t0]. [Rådsmand]
prøv], [t0]. [Telefon], [t0]. [Fax]
FRA [dbo]. [Kunder] AS [t0]
HVOR [t0]. [Kunde-ID] KAN GODT LIDE @p0
-- @p0: Input-streng (størrelse = 5; Prec = 0; Skala = 0) [A_O_T]

For Not Like er det også meget simpelt, bare tilføj noget vrøvl.


var q = (fra c i db. Kunder
hvor! SqlMethods.Like(c.CustomerID, "A_O_T")
vælg c). ToList();

SqlMethods.Like har også en parameter kaldet escape character, som vil blive oversat til en sætning som følger.


VÆLG kolonner FRA tabel HVOR
kolonne LIGESOM '%\%%' ESCAPE '\'
escape skyldes, at et felt indeholder specialtegn, såsom %,_ [ ], som bruges som jokere. Det er her, Escape kommer ind i billedet. Det er en SQL Server-ting.





Tidligere:Optimering af hjemmesideydelse: Detaljeret forklaring af cache-kontrolindstillinger
Næste:Ruijie har altid været beslutsom om, hvad der foregår
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com