在表格中有一组带有创建日期字段的记录。如何选择在一周中的某一天创建的所有记录。例如所有在星期一创建的记录,可能是本周一,上周一或周一。
这是我到目前为止所写的:
from ob in obList
where SqlFunctions.DateDiff("days", today, ob.StartDate) % 7 == 0
select ob.CustomerOnboardingId
但是我得到了一个错误:
{“此函数只能从LINQ到实体调用。”}
更新1:
obList是内存中的一个集合。 今天是变量,它持有DateTime.Today;
答案 0 :(得分:2)
您不需要调用该函数来获取天数的差异,正如例外所述,它只能在Linq to Entities中使用。在Linq to Objects中,您可以执行以下操作:
from ob in obList
where (today - ob.StartDate).TotalDays % 7 == 0
select ob.CustomerOnboardingId
答案 1 :(得分:1)
由于错误指定您正在尝试执行Linq to Entities in-memory的方法,但该方法无法完成。当linq查询,在linq2Sql或EF的上下文中执行时,它被转换为sql,这就是当你使用的函数之类的函数得到它们的含义时 - 它们实现了如何在sql中执行它。在内存中的集合中,它们毫无意义。
(就像你将尝试在linq-to-entities查询中执行代码中定义的方法,并且会得到linq-to-entities不支持 < / p>
您可以使用(day1 - day2) % 7
的{{1}}属性,而不是计算DayOfWeek
:
DateTime