Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用mod功能进行linq到ms访问?_C#_Linq_Ms Access_Dayofweek - Fatal编程技术网

C# 如何使用mod功能进行linq到ms访问?

C# 如何使用mod功能进行linq到ms访问?,c#,linq,ms-access,dayofweek,C#,Linq,Ms Access,Dayofweek,我正在尝试使用linq查询一周中的某一天,我使用ms access作为数据库。现在我使用以下代码使用%mod检查星期几,因为linq to query不支持星期几 planQuery=planQuery.Wherex=>DbFunctions.DiffDaysfirstSunday,x.日期%7 ==intDayOfWeek.星期一和x.日期!=无效的 但将此代码转换为sql时会出现问题,如下所示: 挑选* 从myTable 其中DateDiffd,[Datum],1%7=1 当我试图运行它时,

我正在尝试使用linq查询一周中的某一天,我使用ms access作为数据库。现在我使用以下代码使用%mod检查星期几,因为linq to query不支持星期几

planQuery=planQuery.Wherex=>DbFunctions.DiffDaysfirstSunday,x.日期%7 ==intDayOfWeek.星期一和x.日期!=无效的 但将此代码转换为sql时会出现问题,如下所示:

挑选* 从myTable 其中DateDiffd,[Datum],1%7=1 当我试图运行它时,由于%的原因,它会抛出语法错误。环顾四周后,我意识到ms access的%等价物是mod

因此,下面的代码运行良好。但这不是翻译后的SQL的样子

挑选* 从myTable 其中DateDiffd,[Datum],1 mod 7=1 我如何使用linq使用mod函数查询ms access?

我不明白你为什么说它不起作用,我写道:

planQuery = planQuery.Where(x => (x.Date != null) &&
                              (DbFunctions.DiffDays(firstSunday, x.Date) % 7 == (int)DayOfWeek.Monday));
因为如果x.Date为空,则不测试第二部分。在代码中,如果x.Date为null,则可能会出现错误,因为您在测试结束时对其进行了测试

因为LINQtoQuery不支持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.DiffDaysfirstSunday,x.Date%7,开销稍高。

您使用哪个客户端连接到MS-ACCESS?-这可能是一个bug:-|@Stefan jetentyframework这反映了什么:环顾四周后,我意识到ms access的%等价物是mod?我看不出这与我的代码有什么不同。如果x.Date为null,您将有一个错误,因为DBfunctions在&&test中首先被调用,如果x.Date为null,在我的代码中,测试是错误的,第二部分没有测试,仍然没有回答我要问的问题。我提到了linq查询,不仅仅是linq。这是访问EF核心提供程序的限制,而不是linq查询本身。这非常简单和优雅。这是一种黑客行为,但我现在不必与这种错误作斗争。谢谢