我正在尝试在Linq查询中添加日期时间。
错误是:LINQ to Entities无法识别该方法 'System.DateTime AddMinutes(Double)'方法,而且这个方法不可能 翻译成商店表达。
它正在使用Link to SQL但不适用于LINQ to Entity。
还有其他办法吗?
由于
DataClassesDataContext datacontext = new DataClassesDataContext();
int concertid = Convert.ToInt32(ddlConcerts.SelectedValue.ToString());
GridView1.DataSource = (from ticketallocation in datacontext.tblConcertTicketAllocation
where ticketallocation.ConcertID == concertid
&& ticketallocation.Section == ddlSection.SelectedValue
&& ticketallocation.Row == ddlRows.SelectedValue
select new
{
AutoID = ticketallocation.AutoID,
ConcertID = ticketallocation.ConcertID,
Section = ticketallocation.Section,
Row = ticketallocation.Row,
Seats = ticketallocation.Seats,
Status = ticketallocation.Status == 3 ? "<span style=\"color:#FF0000;\">Sold</span>" :
ticketallocation.Status == 2 ? "<span style=\"color:#999999;\">Aisle Break</span>" :
ticketallocation.Status == 0 ? "<span style=\"color:#009900;\">Available</span>" :
ticketallocation.Status == 1 && ticketallocation.DateandTime.Value.AddMinutes(16) > DateTime.Now ? "<span style=\"color:#FF9900;\">Looking</span>" : "<span style=\"color:#009900;\">Available</span>",
DateandTime = ticketallocation.DateandTime,
OrderNumber = ticketallocation.OrderNumber
}).ToList();
GridView1.DataBind();
答案 0 :(得分:10)
在 EntityFramework 6 中,EntityFunctions消失了。
使用
System.Data.Entity.DbFunctions
代替
这不是OP问题的答案,但也许对一些新来的观众有帮助。
答案 1 :(得分:8)
如果您使用的是Entity Framework v4,请尝试使用此代码
System.Data.Objects.EntityFunctions.AddMinutes(ticketallocation.DateandTime.Value, 16)
而不是
ticketallocation.DateandTime.Value.AddMinutes(16)
如果您使用的是Entity Framework v1,则解决方案为Entity SQL Canonical Functions,例如,如this post中所述。
答案 2 :(得分:0)
您可以使用:System.Data.Entity.DbFunctions