如何使用 mod 函数进行 linq to ms 访问?
How to use mod function for linq to ms access?
我正在尝试使用 linq 查询星期几,并且我有 ms 访问权限作为数据库。现在我使用以下代码使用 % (mod) 检查星期几,因为 linq to query 不支持 DayOfWeek
.
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", [Datum], 1) mod 7) = 1
如何使用linq通过mod函数查询ms access?
我不明白你为什么说 DayOfWeek 不起作用,我写道:
planQuery = planQuery.Where(x => (x.Date != null) &&
(DbFunctions.DiffDays(firstSunday, x.Date) % 7 == (int)DayOfWeek.Monday));
因为如果 x.Date 为空,则不测试第二部分。在您的代码中,如果 x.Date 为空,您可能会出错,因为您在测试结束时对其进行了测试。
since linq to query doesn't support DayOfWeek
DayofWeek 是 C#,不是特殊的 linq 指令
所以如果你想使用 Linq 查询语法,答案可以是:
var result = from x in planQuery
where (x.Date != null) &&
(DbFunctions.DiffDays(firstSunday, x.Date) % 7 == (int)DayOfWeek.Monday)
select x;
模数运算很容易通过一些除法、舍入和减法重现。
DbFunctions.DiffDays(firstSunday, x.Date) - (((int)DbFunctions.DiffDays(firstSunday, x.Date) / 7) * 7)
这应该等于 DbFunctions.DiffDays(firstSunday, x.Date) % 7
,开销略高。
我正在尝试使用 linq 查询星期几,并且我有 ms 访问权限作为数据库。现在我使用以下代码使用 % (mod) 检查星期几,因为 linq to query 不支持 DayOfWeek
.
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", [Datum], 1) mod 7) = 1
如何使用linq通过mod函数查询ms access?
我不明白你为什么说 DayOfWeek 不起作用,我写道:
planQuery = planQuery.Where(x => (x.Date != null) &&
(DbFunctions.DiffDays(firstSunday, x.Date) % 7 == (int)DayOfWeek.Monday));
因为如果 x.Date 为空,则不测试第二部分。在您的代码中,如果 x.Date 为空,您可能会出错,因为您在测试结束时对其进行了测试。
since linq to query doesn't support DayOfWeek
DayofWeek 是 C#,不是特殊的 linq 指令
所以如果你想使用 Linq 查询语法,答案可以是:
var result = from x in planQuery
where (x.Date != null) &&
(DbFunctions.DiffDays(firstSunday, x.Date) % 7 == (int)DayOfWeek.Monday)
select x;
模数运算很容易通过一些除法、舍入和减法重现。
DbFunctions.DiffDays(firstSunday, x.Date) - (((int)DbFunctions.DiffDays(firstSunday, x.Date) / 7) * 7)
这应该等于 DbFunctions.DiffDays(firstSunday, x.Date) % 7
,开销略高。