GetWeekOfYear with Entity Framework

时间:2012-06-29 11:53:31

标签: c# asp.net entity-framework

我的表格中有一栏名为Date,我需要将此日期的WeekOfTheYearDateTime.Now的{​​{1}}进行比较,

如果我这样给,

WeekOfTheYear

我在这里得到var cal = CultureInfo.CurrentCulture.Calendar; int week = cal.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Sunday); 。同样,在我的实体框架中,我需要比较本周的数据,为此我试过,

26

当我像这样运行查询时,会收到错误,

  

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

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

2 个答案:

答案 0 :(得分:2)

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

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

有关重复的问题,请参阅this帖子。基本上,在使用GetWeekOfYear函数之前,数据需要在内存中。

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

答案 1 :(得分:0)

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

Date.DayOfYear / 7