Вопрос по asp.net-mvc, entity-framework, linq, sql-server, timespan – Использование DateTime? .Value.TimeOfDay в LINQ Query

8

Я пытаюсь сделать запрос с помощью LINQ в ASP.NET MVC 3.

У меня есть модель, давайте назовем это Event. Этот объект Event имеет свойство Date, DateTime ?. То, что я хочу, это получить события, которые находятся между 2 временными промежутками.

Прямо сейчас мой код выглядит следующим образом:

TimeSpan From = new TimeSpan(8,0,0);
TimeSpan Until = new TimeSpan(22,0,0);

var events =
    from e in db.Events
    where e.Date.Value.TimeOfDay >= From,
          e.Date.Value.TimeOfDay <= Until
    select e;

Возникает исключение, сообщающее, что «член указанного типа» TimeOfDay »; не поддерживается в LINQ to Entities. & quot;

Я не могу решить эту проблему, и я весь день пытался. Пожалуйста, помогите мне, я так расстроен. :(

РЕДАКТИРОВАТЬ:

Я забыл написать здесь & quot; TimeOfDay & quot; после e.Date.Value. Во всяком случае, я сделал в своем коде.

Я не могу использовать DateTime, потому что мне нужно отфильтровать события, которые происходят между определенным временем дня, несмотря на дату события.

Ваш пример кода даже не используетсяTimeOfDay - Я предполагаю, что на самом деле это так, вместо того, чтобы использоватьDate (согласно вашему коду)? Jon Skeet
Почему вы используете два объекта TimeSpan вместо двух объектов DateTime для фильтрации событий? Steven

Ваш Ответ

1   ответ
13

ИспользоватьКанонические функции даты и времени для LINQ-to-Entities, В частности, посмотрите на

CreateTime(hour, minute, second)

Если вам нужна помощь в вызове канонической функции, посмотрите наКак: вызывать канонические функции.

Error: User Rate Limit Exceededdatetime.Hour, datetime.MinuteError: User Rate Limit Exceededdatetime.Second.
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Umagon
Error: User Rate Limit Exceeded Umagon

Похожие вопросы