LINQ to Entities pour soustraire 2 dates

datetime entity-framework linq-to-entities

Question

J'essaie de déterminer le nombre de jours entre 2 dates à l'aide de LINQ avec Entity Framework. Il me dit qu'il ne reconnaît pas Subtract sur la classe System.TimeSpan

Voici ma partie où de la requête LINQ.

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

Voici l'erreur que je reçois dans le débogueur VS.NET

{"LINQ to Entities ne reconnaît pas la méthode" System.TimeSpan Subtract (System.DateTime) "et cette méthode ne peut pas être traduite en expression de magasin."}

Est-ce que je fais quelque chose de mal ou existe-t-il un meilleur moyen d'obtenir le nombre de jours entre 2 DateTimes dans le cadre de l'entité?

merci Michael

Réponse acceptée

Voici comment je l'ai fait fonctionner

J'ai défini une variable datetime qui représente la date la plus ancienne

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

puis j'ai modifié la partie où de la requête LINQ

where (vid.CreatedDate >= oldestDate )

a travaillé comme un charme - merci Micah de m'avoir fait penser à l'arbre d'expression


Réponse populaire

La réponse acceptée est meilleure dans ce cas, mais pour référence, vous pouvez utiliser la classe EntityFunctions pour effectuer des opérations sur des dates, entre autres.

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


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow