GetWeekOfYear avec Entity Framework

J’ai une colonne dans mon tableau appelée Date et j’ai besoin de comparer la WeekOfTheYear l’ WeekOfTheYear cette date avec la WeekOfTheYear l’ WeekOfTheYear du WeekOfTheYear WeekOfTheYear .

Si je donne comme ça,

 var cal = CultureInfo.CurrentCulture.Calendar; int week = cal.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Sunday); 

J’en ai 26 ici. De la même manière, dans mon Entity Framework, je dois comparer les données de cette semaine. Pour cela, j’ai essayé comme,

 entities.WorkingDays.Where(a => cal.GetWeekOfYear(a.DATE,CalendarWeekRule.FirstDay,DayOfWeek.Sunday) == cal.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Sunday) 

quand je lance la requête comme ça, je reçois une erreur comme,

“LINQ to Entities ne reconnaît pas la méthode” Int32 GetWeekOfYear (System.DateTime, System.Globalization.CalendarWeekRule, System.DayOfWeek) “et cette méthode ne peut pas être traduite en expression de magasin.”

Comment puis-je récupérer les données hebdomadairement ici? Quelqu’un peut-il m’aider ici? … merci d’avance

Appelez d’abord .ToList (). Comme ça:

 entities.WorkingDays.ToList().Where(a => cal.GetWeekOfYear(a.DATE,CalendarWeekRule.FirstDay,DayOfWeek.Sunday) == cal.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Sunday) 

Voir ce post pour le numéro en double. Fondamentalement, les données doivent être en mémoire avant d’utiliser vos fonctions GetWeekOfYear.

Comme indiqué dans les commentaires, cela ramène l’ensemble de la table “WorkingDays” en mémoire et permet donc d’extraire plus de données que nécessaire du DB. Cela est parfois préférable à l’utilisation de procédures stockées et parfois non, en fonction de la quantité de données et d’autres facteurs en fonction de l’architecture de votre application / firebase database.

Vous pourriez probablement utiliser le jour de l’année et le diviser par 7 dans les deux cas, et obtenir un résultat suffisant?

 Date.DayOfYear / 7