我有以下内容:
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不能使用日期,因为它没有如何阅读和比较它们的概念。这就是我特意要求它比较Year
Month
和Day
属性(都是int
s)的原因。我的查询中有什么抛出此异常?
P.S。 EventViewModel.Date
是String
答案 0 :(得分:1)
您需要更改查询,这样您就不会在DateTime上调用Date属性并更改视图模型。
将您定义为字符串的DateTime属性定义为DateTime。 像这样注释DateTime属性
public class ArtistResponse
{
public Nullable<int> ArtistId { get; set; }
public string Name { get; set; }
}
或您在UI中使用的任何日期格式。
像这样更改您的查询
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? Date{ get; set; }
答案 1 :(得分:0)
您尝试做的事情似乎是在比较和投影中排除日期的时间部分。如果是这种情况,请使用DbFunctions。
<div class="mobile-links">
<div id="dropdown" onclick="myFunction()">
<button class="dropbtn">
<span><img src="http://www.smockedoverstocks.net/skin/frontend/lee/default/images/hamburger-menu.png"/></span></button>
<div class="dropdown-content">
<div class="quick-access five columns omega">
content
</div>
</div>
</div>
</div>
然后
.Where(DbFunctions.TruncateTime(e.Date == date))
答案 2 :(得分:0)
LINQ与其他人提到的Dates合作。这是你的SELECT在x.Date.Date.ToString()