如何解决如何使用linq to ms access的mod函数?
我正在尝试使用linq查询星期几,并且我拥有ms访问权限作为数据库。现在,由于linq查询不支持DayOfWeek
,因此我已使用以下代码使用%(mod)来检查星期几。
planQuery = planQuery.Where(x => DbFunctions.DiffDays(firstSunday,x.Date) % 7
== (int)DayOfWeek.Monday && x.Date != null);
但是当将此代码转换为sql时,会出现问题,如下所示:
SELECT *
FROM myTable
where (DateDiff("d",[Datum],1) % 7) = 1
当我尝试运行它时,由于%而反过来会引发语法错误。环顾四周后,我意识到等效于ms访问的百分比是mod
因此以下代码运行良好。但这不是经过翻译的SQL的样子。
SELECT *
FROM myTable
where (DateDiff("d",1) mod 7) = 1
如何使用linq使用mod函数查询ms访问权限?
解决方法
模量是一种易于进行除法,四舍五入和减法运算的操作。
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。