Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 20728|Respuesta: 0

[Fuente] Como una consulta difusa en Linq a SQL

[Copiar enlace]
Publicado en 7/9/2015 23:16:28 | | |
El funcionamiento de Like es un poco parecido a en, pero la dirección ha cambiado. ¿Qué significa? Das una cadena y buscas un campo en los datos que contenga esa cadena. Es decir, una cadena dada es un subconjunto de un cuerpo. SQL scrip{filter}t se escribe así.


Selecciona * de la tabla donde me gustaría '%AD%'
Selecciona * de la tabla donde me gustaría '%AD'
Selecciona * de la tabla donde me gustaría 'AD%'
El % anterior es un comodín, lo que indica que el campo contiene un valor, y la posición desconocida se reemplaza por %. La primera es indicar que la sección central es AD, y que los dos extremos no están claros. El segundo es AD al final, y el anterior no está claro. La tercera, por el contrario, comienza con AD y termina de forma poco clara. La sentencia Linq correspondiente es:


var q = (de c en db. Clientes
donde c.CustomerID.Contains("ROUT")
selecciona c). ToList();
El SQL que genera es


SELECT [t0]. [CustomerID], [t0]. [Nombre de la empresa], [t0]. [NombreDeContacto], [t0]. [ContactT
itle], [t0]. [Dirección], [t0]. [Ciudad], [t0]. [Región], [t0]. [Código postal], [t0]. [Consejo]
intentar], [t0]. [Teléfono], [t0]. [Fax]
DE [dbo]. [Clientes] AS [t0]
DONDE [t0]. [CustomerID] COMO @p0
-- @p0: Cadena de entrada (tamaño = 6; Prec = 0; Escala = 0) [%ROUT%]
Terminando con ISSA, la carta comodín principal:


var q = (de c en db. Clientes
donde c.CustomerID.EndsWith("ISSA")
selecciona c). ToList();
El SQL que genera es


SELECT [t0]. [CustomerID], [t0]. [Nombre de la empresa], [t0]. [NombreDeContacto], [t0]. [ContactT
itle], [t0]. [Dirección], [t0]. [Ciudad], [t0]. [Región], [t0]. [Código postal], [t0]. [Consejo]
intentar], [t0]. [Teléfono], [t0]. [Fax]
DE [dbo]. [Clientes] AS [t0]
DONDE [t0]. [CustomerID] COMO @p0
-- @p0: Cadena de entrada (tamaño = 5; Prec = 0; Escala = 0) [%ISSA]
Empezando por ARO, comodín de cola:


var q = (de c en db. Clientes
donde c.CustomerID.WithsWith("ARO")
selecciona c). ToList();
El SQL que genera es


SELECT [t0]. [CustomerID], [t0]. [Nombre de la empresa], [t0]. [NombreDeContacto], [t0]. [ContactT
itle], [t0]. [Dirección], [t0]. [Ciudad], [t0]. [Región], [t0]. [Código postal], [t0]. [Consejo]
intentar], [t0]. [Teléfono], [t0]. [Fax]
DE [dbo]. [Clientes] AS [t0]
DONDE [t0]. [CustomerID] COMO @p0
-- @p0: Cadena de entrada (tamaño = 4; Prec = 0; Escala = 0) [ARO%]

Linq también proporciona un método llamado SqlMethods.Like, que requiere añadir primero el espacio de nombres System.Data.Linq.SqlClient. Los tres anteriores pueden escribirse


var q = (de c en db. Clientes
donde SqlMethods.Like(c.CustomerID, "%ROUT%")
selecciona c). ToList();
Aquí, tienes que rellenar tú mismo el comodín para decirle a Linq cómo has hecho match. Como qué


var q = (de c en db. Clientes
donde SqlMethods.Like(c.CustomerID, "%ISSA")
selecciona c). ToList();
Otro ejemplo:


var q = (de c en db. Clientes
donde SqlMethods.Like(c.CustomerID, "ARO%")
selecciona c). ToList();
Lo más sorprendente de SqlMethods.Like es que puedes implementar comodines en cualquier lugar con tus propias expresiones comodines definidas. Como qué


var q = (de c en db. Clientes
donde SqlMethods.Like(c.CustomerID, "A%O%T")
selecciona c). ToList();
El SQL que genera es


SELECT [t0]. [CustomerID], [t0]. [Nombre de la empresa], [t0]. [NombreDeContacto], [t0]. [ContactT
itle], [t0]. [Dirección], [t0]. [Ciudad], [t0]. [Región], [t0]. [Código postal], [t0]. [Consejo]
intentar], [t0]. [Teléfono], [t0]. [Fax]
DE [dbo]. [Clientes] AS [t0]
DONDE [t0]. [CustomerID] COMO @p0
-- @p0: Cadena de entrada (tamaño = 5; Prec = 0; Escala = 0) [A%O%T]

Lo más estándar es saber que empieza por A y termina por T, conoce un valor O en medio y no conoce nada más. Solo usa esto.
SQL Server define cuatro comodines, todos disponibles aquí. Son:
Ejemplo de carácter comodín Descrip{filter}tion
% Cualquier cadena de cero o más caracteres. DONDE títulos COMO '%computer%' encuentran todos los títulos de libros con la palabra 'ordenador' en cualquier parte del título.
_ (guion bajo) Cualquier personaje en particular. DONDE au_fname COMO '_ean' encuentra los nombres de pila de cuatro letras que terminan en e (Dean, Sean, etc.).
[ ] Cualquier carácter individual dentro del rango especificado ([a-f]) o conjunto ([abcdef]). DONDE au_lname COMO '[C-P]arsen' encuentra apellidos de autor que terminan en arsen y comienzan con cualquier carácter entre C y P, por ejemplo Carsen, Larsen, Karsen, y así sucesivamente.
[^] Cualquier carácter individual que no esté dentro del rango especificado ([^a-f]) o conjunto ([^abcdef]). DONDE au_lname COMO 'de[^l]%' todos los apellidos de autor que comienzan por de y donde la siguiente letra no es l.

% representa una cadena de longitud cero o cualquier longitud. _ indica un carácter. [] indica un carácter dentro de un rango de rango. [^] indica un carácter que no está en un cierto rango
Como qué:


var q = (de c en db. Clientes
donde SqlMethods.Like(c.CustomerID, "A_O_T")
selecciona c). ToList();
Simplemente usa _ para representar un personaje. El SQL generado es:


SELECT [t0]. [CustomerID], [t0]. [Nombre de la empresa], [t0]. [NombreDeContacto], [t0]. [ContactT
itle], [t0]. [Dirección], [t0]. [Ciudad], [t0]. [Región], [t0]. [Código postal], [t0]. [Consejo]
intentar], [t0]. [Teléfono], [t0]. [Fax]
DE [dbo]. [Clientes] AS [t0]
DONDE [t0]. [CustomerID] COMO @p0
-- @p0: Cadena de entrada (tamaño = 5; Prec = 0; Escala = 0) [A_O_T]

Para no gustar, también es muy sencillo, solo hay que añadir un sinsentido sin sentido.


var q = (de c en db. Clientes
¡Dónde! SqlMethods.Like(c.CustomerID, "A_O_T")
selecciona c). ToList();

SqlMethods.Like también tiene un parámetro llamado carácter escape, que se traducirá en una sentencia como la siguiente.


SELECT columnas FROM table WHERE
columna LIKE '%\%%' ESCAPE '\'
escape se debe a que un campo contiene caracteres especiales, como %,_ [ ], que se usan como comodines. Ahí es donde entra Escape. Esto es cosa de SQL Server.





Anterior:Optimización del rendimiento del sitio web: Explicación detallada de la configuración de control de caché
Próximo:Ruijie siempre ha estado decidida por lo que está pasando
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com