【发布时间】:2017-02-11 00:43:59
【问题描述】:
我有以下:
return db.Events
.Where(e =>
e.BedId == bed
&& e.Date.Year == date.Year
&& e.Date.Month == date.Month
&& e.Date.Day == date.Day)
.Select(x => new EventViewModel() {
Id = x.Id,
Date = x.Date.Date.ToString(),
StartTime = x.StartTime.ToString(),
EndTime = x.EndTime.ToString(),
Planned = x.Planned,
EngineSN = x.EngineSN,
Details = x.Details,
Bed = x.Bed.Name,
Category = x.Subcategory.Category.Name,
Subcategory = x.Subcategory.Name,
Project = x.Project.Name,
Type = x.Type.ToString()
})
.ToList();
它抱怨member 'date' is not supported by LINQ
我知道 LINQ 不能处理日期,因为它不知道如何读取和比较它们。这就是为什么我特别要求它比较YearMonth和Day属性(都是ints)。我的查询中的什么引发了这个异常?
附: EventViewModel.Date 是 String
【问题讨论】:
-
这是 LINQ To Entities,这意味着您的查询最终必须转换为 SQL。检查答案:stackoverflow.com/questions/11663523/…
-
你是什么意思 LINQ 不能处理日期? LINQ绝对可以。 LINQ 可以处理任何类型,这就是语言集成查询的全部意义所在。您是否使用特定框架,例如 LINQ to SQL 或 LINQ to Entities?
-
@pymaxion 抱歉,我的意思是在处理实体和 SQL 时。
-
我相信,where 子句中的日期不是问题,问题出在您的 SELECT 中。可能在 x.Date.Date.ToString()。尝试相同的语句,但不包括 SELECT 部分。
-
@Shashibhushan 你是对的,注释掉
x.Date.Date.ToString()的作品。可能是什么问题?