LINQ a Entidades para restar 2 fechas

datetime entity-framework linq-to-entities

Pregunta

Estoy tratando de determinar el número de días entre 2 fechas usando LINQ con Entity Framework. Me dice que no reconoce Restar en la clase System.TimeSpan

Aquí está mi parte de la consulta LINQ.

where ((DateTime.Now.Subtract(vid.CreatedDate).TotalDays < maxAgeInDays))

Aquí está el error que recibo en el depurador VS.NET

{"LINQ to Entities no reconoce el método 'System.TimeSpan Subtract (System.DateTime)', y este método no se puede traducir a una expresión de tienda."}

¿Estoy haciendo algo mal o hay una mejor manera de obtener el número de días entre 2 DateTimes en el marco de la entidad?

gracias michael

Respuesta aceptada

Así es como lo hice funcionar.

Definí una variable datetime que representa la fecha más antigua

DateTime oldestDate = DateTime.Now.Subtract(new TimeSpan(maxAgeInDays, 0, 0, 0, 0));
...

Luego modifiqué la parte donde de la consulta LINQ

where (vid.CreatedDate >= oldestDate )

funcionó de maravilla - gracias a Micah por hacerme pensar en el árbol de expresiones


Respuesta popular

La respuesta aceptada es mejor en este caso, pero como referencia puede usar la clase EntityFunctions para realizar operaciones en fechas, entre otras cosas.

where (vid.CreatedDate >= EntityFunctions.AddDays(DateTime.Now, -maxAgeInDay))


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué