.net - una - linq compare two dates without time
¿Cómo comparar fechas en LINQ? (3)
Quiero verificar si una fecha determinada es más de un mes anterior a la fecha de hoy usando LINQ.
¿Cuál es la sintaxis para esto?
Gracias por adelantado.
Supongo que estás hablando en la cláusula where. Es básicamente de la misma manera que compararía dos objetos DateTime en otro lugar.
using (DataContext context = new DataContext()) {
var query = from t in context.table
where t.CreateDate.Date < DateTime.Today.AddMonths(-1)
select t;
}
Solo para agregar, en LINQ To Entities tienes que comparar con una variable. Ejemplo:
DateTime lastMonth = DateTime.Today.AddMonths(-1);
using (var db = new MyEntities())
{
var query = from s in db.ViewOrTable
orderby s.ColName
where (s.StartDate > lastMonth)
select s;
_dsResults = query.ToList();
}
Si no quieres que tu código se lance
LINQ to Entities does not recognize the method ''System.DateTime AddYears(Int32)'' method, and this method cannot be translated into a store expression.
Sugeriría usar DbFunctions.AddYears. Además, si le preocupan solo las fechas y no los horarios, podría usar DbFunctions.TruncateTime
Algo como esto-
DbFunctions.TruncateTime(x.date) ==
DbFunctions.TruncateTime(DbFunctions.AddYears(DateTime.Today, 1))