DateTime在Linq中添加计算到实体查询

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问题的答案,但也许对一些新来的观众有帮助.


Dev*_*art 8

如果您使用的是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规范函数,例如,就像是在描述这个职位.