GetWeekOfYear with Entity Framework

我的表中有一个名为Date的列,我需要将这个日期的WeekOfTheYearDateTime.NowWeekOfTheYear进行比较,

如果我这样给,

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

我在这里得到26分。 同样,在我的entity framework中,我需要比较本周的数据,为此我试过,

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

当我像这样运行查询时,我得到的错误就像,

“LINQ to Entities无法识别方法’Int32 GetWeekOfYear(System.DateTime,System.Globalization.CalendarWeekRule,System.DayOfWeek)’方法,并且此方法无法转换为商店表达式。”

我如何在这里每周获取数据,任何人都可以帮助我….在此先感谢

首先调用.ToList()。 像这样:

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

请参阅此post以了解重复问题。 基本上,在使用GetWeekOfYear函数之前,数据需要在内存中。

正如评论中所指出的,这确实将整个“WorkingDays”表带入内存,因此从数据库中获取的数据超出了所需数据。 有时这比使用存储过程更有利,有时则不然,具体取决于基于应用程序/数据库体系结构的数据量和其他因素。

您可以使用一年中的某一天,并在两个实例上除以7,并获得足够的结果?

 Date.DayOfYear / 7