Tengo un procedimiento en SQL que estoy tratando de convertir 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 línea que más me preocupa es:
where OH.Hierarchy like '%/12/%'
Tengo una columna que almacena la jerarquía como / 1/3/12 / por ejemplo, así que solo uso% / 12 /% para buscarla.
Mi pregunta es, ¿cuál es el equivalente de Linq o .NET para usar el signo de porcentaje?
5
votos para la etiqueta de operador similar . ¿Podría solicitar amablemente que sugiera sql-like como sinónimo ?Respuestas:
También puedes usar
.StartsWith()
o.EndsWith()
.fuente
StartsWith("abc")
se convierteLIKE 'abc%'
yEndsWith("abc")
se convierte enLIKE '%abc'
.ToLower().Contains()
etc., si quieres ignorar el caso. Si lo desea, por supuesto, dependerá de si está tratando de imitar LIKE desde una base de datos con intercalación entre mayúsculas y minúsculas o no.Utilizar este:
fuente
SqlMethods
uso de "notación de puntos"?System.Data.Linq.SqlClient
espacio de nombres.Supongo que está utilizando Linq-to-SQL * (vea la nota a continuación). Si es así, use string.Contains, string.StartsWith y string.EndsWith para generar SQL que use el operador SQL LIKE.
o
Nota: * = si está utilizando ADO.Net Entity Framework (EF / L2E) en .net 3.5, tenga en cuenta que no realizará la misma traducción que Linq-to-SQL. Aunque L2S hace una traducción adecuada, L2E v1 (3.5) se traducirá en una expresión t-sql que forzará un escaneo completo de la tabla que está consultando a menos que haya otro discriminador mejor en su cláusula where o filtros de unión.
Actualización: Esto se corrige en EF / L2E v4 (.net 4.0), por lo que generará un LIKE de SQL como lo hace L2S.
fuente
@
signo, pero me doy cuenta de que esto puede ser una buena convención a seguir.Si está utilizando VB.NET, la respuesta sería "*". Así es como se vería su cláusula where ...
Nota: "*" Coincide con cero o más caracteres. Aquí está el artículo de msdn para el operador Like .
fuente
Bueno indexOf también funciona para mí
fuente
Usa dicho código
fuente
.NET core ahora tiene
EF.Functions.Like
fuente
En caso de que no coincida con cadenas numéricas, siempre es bueno tener un caso común:
fuente
Siempre hago esto:
Sé que no uso la declaración similar, pero funciona bien en segundo plano, esto se traduce en una consulta con una declaración similar.
fuente
Prueba esto, esto funciona bien para mí
fuente
fuente
Contiene se usa en Linq, al igual que Like se usa en SQL.
. . .
Puede escribir su script SQL en Linq de la siguiente manera:
fuente
Para aquellos que caen aquí, como yo, buscando un método "SQL Like" en LINQ, tengo algo que funciona muy bien.
Estoy en un caso en el que no puedo alterar la base de datos de ninguna manera para cambiar la clasificación de columnas. Así que tengo que encontrar una manera en mi LINQ para hacerlo.
Estoy usando el método auxiliar
SqlFunctions.PatIndex
que actúa de manera similar al operador real SQL LIKE.Primero necesito enumerar todos los diacríticos posibles (una palabra que acabo de aprender) en el valor de búsqueda para obtener algo como:
y luego en LINQ por ejemplo:
Entonces, para mis necesidades, he escrito un método de Ayuda / Extensión
Si alguno de ustedes tiene sugerencias para mejorar este método, estaré encantado de escucharlo.
fuente
Muy tarde, pero reuní esto para poder hacer comparaciones de cadenas usando comodines de estilo SQL Like:
fuente