DateTime Добавить расчет внутри Linq для запроса сущностей - PullRequest
5 голосов
/ 16 марта 2011

Я пытаюсь добавить дату и время в запросе 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 ]

10 голосов
/ 16 сентября 2014

В EntityFramework 6 EntityFunctions ушли.

Используйте

System.Data.Entity.DbFunctions

вместо

Это не ответ на вопрос ОП, но, возможно, это поможет некоторым входящим зрителям.

8 голосов
/ 16 марта 2011

Если вы используете Entity Framework v4, попробуйте этот код

System.Data.Objects.EntityFunctions.AddMinutes(ticketallocation.DateandTime.Value, 16) 

вместо

ticketallocation.DateandTime.Value.AddMinutes(16)

Если вы используете Entity Framework v1, решение будет Entity SQLКанонические функции , например, как описано в этом посте .

0 голосов
/ 02 апреля 2014

Вы можете использовать: System.Data.Entity.DbFunctions

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...