Tengo el siguiente código SQL:LINQ to SQL: cómo escribir una selección 'Me gusta'?
select * from transaction_log where stoptime like '%2008%'
¿Cómo escribo esto en LINQ a la sintaxis SQL?
Tengo el siguiente código SQL:LINQ to SQL: cómo escribir una selección 'Me gusta'?
select * from transaction_log where stoptime like '%2008%'
¿Cómo escribo esto en LINQ a la sintaxis SQL?
Si desea utilizar el método literal, es como esto:
var query = from l in transaction_log
where SqlMethods.Like(l.stoptime, "%2008%")
select l;
Otra opción es:
var query = from l in transaction_log
where l.stoptime.Contains("2008")
select l;
Si es un DateTime:
var query = from l in transaction_log
where l.stoptime.Year = 2008
select l;
Ese método es en el System.Data.Linq.SqlClient namespace
from x in context.Table where x.Contains("2008") select x
No estoy seguro de si esto da como resultado el Sql adecuado. Tendría que perfilarlo para ver. – Will
Si el tipo de datos de tiempo de parada es una cadena, puede utilizar la función .Contains(), y también .StartsWith() y .EndsWith().
Si usa el método contains para, a continuación, está haciendo un LIKE '% somestring%'. Si usa un método de inicio, entonces es lo mismo que 'somestring%'. Finalmente, endswith es lo mismo que usar '% somestring'.
Para resumir, contiene encontrará cualquier patrón en la cadena, pero comienza con y le ayudará a encontrar las coincidencias al principio y al final de la palabra.
El punto realmente interesante es que .NET crea consultas como "Seleccionar * de la tabla donde se nombra como '% test%'" cuando se usa "de x en contexto.Table donde x.Contains (" test ") seleccione x "que es bastante impresionante
Gracias - buenas respuestas.
Esto es, de hecho, un tipo de fecha y hora; Tuve que encasillar "stoptime" como:
var query = from p in dbTransSummary.Transaction_Logs
where ((DateTime) p.StopTime).Year == dtRollUpDate.Year
select
Punto menor. ¡Funciona genial!
genial. Estoy fuera de funcionamiento. Tuve que encasillar el "tiempo de reposo" en un DateTime para acceder a la propiedad Year, pero no fue un gran problema. –