我有一个应用程序,我想找到给定年份可用的不同可用月份。但是,通过下面的查询,我收到错误消息
部分日期格式出错。 [表达式(如果已知)=]
当我尝试执行以下查询时:
IQueryable<DateTime> availableMonths =
(from item in database.IntakeItems
where item.Timestamp >= statsYearStart
&& item.Timestamp <= statsYearEnd
select new DateTime(1, item.Timestamp.Month, 1))
.Distinct()
.OrderByDescending(y => y.Month);
statsYearStart
和statsYearEnd
在属性设置器中创建,并在执行查询时包含有效的DateTime:
statsYearEnd = new DateTime(value, 12, 31);
statsYearStart = new DateTime(value, 1, 1);
使用EntityFramework通过代码优先方法创建数据库。 item.Timestamp的列定义为:
private DateTime timestamp;
[Column]
public DateTime Timestamp
{
get
{
return timestamp;
}
set
{
if (timestamp != value)
{
NotifyPropertyChanging();
timestamp = value;
NotifyPropertyChanged();
}
}
}
我对LINQ和EF很新,所以如果您需要其他信息,请告诉我。起初我怀疑这可能是因为本地化问题(应用程序),但我没有在任何.ToString
上使用DateTime
。什么可能导致异常?
答案 0 :(得分:2)
我认为问题在于您将Year
的{{1}}设置为DateTime
,并且我认为EF的最短日期是
1