jueves, 24 de abril de 2014

como filtrar en el Where de una consulta Linq c# entre 2 fechas

Estaba intentando realizar una consulta que me devolviese las ventas de una fecha concreto y para ello necesitaba filtrar los datos de la tabla entre dichas fechas. Si utilizaba la sintaxis: DateTime.Now.AddDays( 7)  el compilador me lanzaba un error indicando:

LINQ to Entities no reconoce el método 'System.DateTime AddDays(Double)' del método, y este método no se puede traducir en una expresión de almacén.

la solución consiste en cambiar dicha función por: System.Data.Objects.EntityFunctions.AddDays(DateTime.Now, 7)

de modo que el resultado seria algo así:

 var consulta = from g in cloudModel.lineasTickets
                                   where (g.fecha <= DateTime.Now && g.fecha >= System.Data.Objects.EntityFunctions.AddDays(DateTime.Now, -15))

en lugar de

 var consulta = from g in cloudModel.lineasTickets
                                   where (g.fecha <= DateTime.Now && g.fecha >= DateTime.Now.AddDays(-15))

Fuente: http://social.msdn.microsoft.com/Forums/en-US/78079cf0-7b77-4e8a-abc0-b47538caac19/adding-days-to-datetime-field-inside-linq-where-clause?forum=linqtosql

2 comentarios:

Jesús Moreno - Ingeniero Ténico Informático - consultor Informático

Hola, soy Jesús Moreno Ingeniero Técnico Informático en sistemas por la US y propietario de éste blog. Mi trabajo en los ultimos años se ...