4

我的表中有一个名为 的列,Date我需要将此日期WeekOfTheYearDateTime.Now's进行比较WeekOfTheYear

如果我这样付出,

var cal = CultureInfo.CurrentCulture.Calendar;

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

我要26到这里了。同样,在我的实体框架中,我需要比较本周的数据,为此我尝试过,

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)' 方法,并且此方法无法转换为存储表达式。”

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

4

2 回答 2

2

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

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

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

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

于 2012-06-29T12:06:14.527 回答
1

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

Date.DayOfYear / 7
于 2012-07-11T12:40:23.773 回答