问题描述
我正在尝试使用linq查询星期几,并且我拥有ms访问权限作为数据库。现在,由于linq查询不支持DayOfWeek
,因此我已使用以下代码使用%(mod)来检查星期几。
planQuery = planQuery.Where(x => DbFunctions.DiffDays(firstSunday,x.Date) % 7 == (int)DayOfWeek.Monday && x.Date != null);
@H_502_7@SELECT * FROM myTable where (DateDiff("d",[Datum],1) % 7) = 1
@H_502_7@当我尝试运行它时,由于%而反过来会引发语法错误。环顾四周后,我意识到等效于ms访问的百分比是
mod
SELECT * FROM myTable where (DateDiff("d",1) mod 7) = 1
@H_502_7@解决方法
模量是一种易于进行除法,四舍五入和减法运算的操作。
DbFunctions.DiffDays(firstSunday,x.Date) - (((int)DbFunctions.DiffDays(firstSunday,x.Date) / 7) * 7)
这应该等于
,DbFunctions.DiffDays(firstSunday,x.Date) % 7
,但开销要高一些。我不明白为什么你说DayOfWeek不起作用,我写道:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="DIV_Container"> <div class='div_sub_dyn' id="DIV_1"> <img src="https://i.stack.imgur.com/OVOg3.jpg" width=150> </div> <div class='div_sub_dyn' id="DIV_2"> <img src="https://i.stack.imgur.com/XZ4V5.jpg" width=150> </div> <div class='div_sub_dyn' id="DIV_3"> <img src="https://i.stack.imgur.com/aH5zB.jpg" width=300> </div> </div>
因为如果x.Date为null,则不测试第二部分。在您的代码中,如果x.Date为null,则可能会出错,因为您在测试结束时对其进行了测试。
planQuery = planQuery.Where(x => (x.Date != null) && (DbFunctions.DiffDays(firstSunday,x.Date) % 7 == (int)DayOfWeek.Monday));
DayofWeek是C#,不是特殊的linq指令
因此,如果要使用Linq Query语法,答案可能是:
since linq to query doesn't support DayOfWeek