use*_*680 5 c# linq-to-entities
我想在Linq查询中添加datetime.
错误是:LINQ to Entities无法识别方法'System.DateTime AddMinutes(Double)'方法,并且此方法无法转换为商店表达式.
它在链接到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();
Run Code Online (Sandbox Code Playgroud)
Gh6*_*h61 10
在EntityFramework 6中, EntityFunctions消失了.
使用
System.Data.Entity.DbFunctions
Run Code Online (Sandbox Code Playgroud)
代替
这不是OP问题的答案,但也许对一些新来的观众有帮助.
如果您使用的是Entity Framework v4,请尝试使用此代码
System.Data.Objects.EntityFunctions.AddMinutes(ticketallocation.DateandTime.Value, 16)
Run Code Online (Sandbox Code Playgroud)
代替
ticketallocation.DateandTime.Value.AddMinutes(16)
Run Code Online (Sandbox Code Playgroud)
如果您正在使用实体框架V1,解决的办法是实体SQL规范函数,例如,就像是在描述这个职位.