我有一个EF查询,其中我需要在DateTime的实体集合中获取每月的第一天。这是使用Linq to Entities (如果是Linq to Objects,我只需要实例化一个新的DateTime)。这基本上是我使用的代码:
dbContext.Calendar
.Select(date => DbFunctions.CreateDateTime(date.Year, date.Month, 1, 0, 0, 0))
.ToList();这将导致以下错误:ORA-01841: (full) year must be between -4713 and +9999, and not be 0
但是,看看即将到来的数据,我能看到的最接近于0的年份是2000年,但即使我将其限制在非2000年,也会发生这种情况。
此外,dbContext.Calendar.ToList();运行得很好,但它不能让我在这个月的第一个月。
这是一个已知的bug吗?有没有更好的方法来找到这个月的第一个月?有没有更好的方法将Linq中的DateTimes实例化为Oracle DB的实体?
谢谢。
发布于 2019-06-26 22:30:38
我总是讨厌答案就在我面前,我一次又一次地错过它。在本例中,解决方案是AsEnumerable()。在此之后,您将使用Linq to Objects,而不是Linq to Entities,因此您可以像往常一样实例化DateTime。
dbContext.Calendar
.AsEnumerable()
.Select(date => new DateTime(date.Year, date.Month, 1))
.ToList();https://stackoverflow.com/questions/56756563
复制相似问题