C# “linq查询”;“必须是可约节点”;Asp.Net web应用程序中出现错误
我有以下查询,它不适用于“必须是可还原节点”错误。 似乎转换为SQL代码的工作不正常。 我厌倦了使用DbFunctions.CreateDateTime,但它给出了完全相同的结果。 我做错了什么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
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声明,它成功了。