我的表格中有一栏名为Date
,我需要将此日期的WeekOfTheYear
与DateTime.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)' 方法,并且此方法无法转换为商店表达式。“
我如何在这里每周获取数据,任何人都可以帮助我......提前感谢
答案 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