Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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# “linq查询”;“必须是可约节点”;Asp.Net web应用程序中出现错误_C#_Asp.net_Entity Framework_Linq - Fatal编程技术网

C# “linq查询”;“必须是可约节点”;Asp.Net web应用程序中出现错误

C# “linq查询”;“必须是可约节点”;Asp.Net web应用程序中出现错误,c#,asp.net,entity-framework,linq,C#,Asp.net,Entity Framework,Linq,我有以下查询,它不适用于“必须是可还原节点”错误。 似乎转换为SQL代码的工作不正常。 我厌倦了使用DbFunctions.CreateDateTime,但它给出了完全相同的结果。 我做错了什么 var query = from i in _context.Schedule group i by new { i.Date.Month, i.Date.Year } into g

我有以下查询,它不适用于“必须是可还原节点”错误。 似乎转换为SQL代码的工作不正常。 我厌倦了使用DbFunctions.CreateDateTime,但它给出了完全相同的结果。 我做错了什么

            var query = from i in _context.Schedule
                        group i by new { i.Date.Month, i.Date.Year } into g
                        where new DateTime(g.Key.Year, g.Key.Month, 1) >= eDate
                        select g.Key;

我怀疑您使用的是有限制的Core。请尝试以下操作:

var query = _context.Schedule.Where(g => new DateTime(g.Year, g.Month, 1) >= eDate)
     .GroupBy(i => new { i.Date.Month, i.Date.Year })
     .Select(g => g.Key); 

您是否已将其隔离到where子句中?发布准确的.Net版本可能会有所帮助,因为其中一些版本中存在导致此错误的错误。@Yeronimo抱歉,忘记了版本,我使用的是Asp.Net Core 2.1 Flydog57是的,当我使用“new DateTime(g.Key.Year,g.Key.Month,1)”语句时会发生这种情况。例如,如果我将其更改为“new DateTime()”,它可以工作,但这不是我需要的…是的,这一个看起来可以工作,我将在明天测试完所有内容后确认。非常感谢。不过,我想知道更多关于限制的信息。我使用的是Asp.Net核心MVC 2.1,您键入的请求和我键入的请求有什么特别的区别?我认为使用linq是在EF中表达SQL查询更方便的方法。。。另外,我是新手,所以如果我问了一些愚蠢的问题,请不要责怪我:)核心库比网络库小得多,因此它适合于移动应用程序。@Wadim您的查询使用了group by
作为
where
-如果您将
where
放在group by之前,并根据
I
进行测试,那么它应该是等效的谢谢大家,我按照提议修改了我的linq声明,它成功了。