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

时间:2011-03-16 01:56:44

标签: c# linq-to-entities

我正在尝试在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();

3 个答案:

答案 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