Выражение LINQ невозможно перевести при сравнении времени ⇐ C#
Выражение LINQ невозможно перевести при сравнении времени
Я пытаюсь узнать, есть ли какой-либо фильм, который вот-вот начнется, поэтому проверьте before или он уже начался, следовательно, проверьте after. Я использую DateTimeOffset для отслеживания времени, поскольку использую Postgres.
И вот мой запрос, чтобы узнать, есть ли какой-либо фильм: я ожидаю, что в определенное время будет один фильм, а если его нет, то он должен вернуть ноль.
var now = DateTimeOffset.Now; вар до = сейчас.AddMinutes(-15); вар после = сейчас.AddMinutes(10); вар фильм = ждут _context.Movies.SingleOrDefaultAsync(rx => rx.LanguageId == request.LanguageId && rx.MovieStart = после); Но я получаю эту ошибку, как показано ниже, и подозреваю, что эта часть предложения: && rx.MovieStart = after
Выражение LINQ 'DbSet() .Where(s => s.LanguageId == __request_LanguageId_0 && s.MovieStart = __after_2)' не удалось перевести. Либо перепишите запрос в форме, которую можно перевести, либо явно переключитесь на клиентскую оценку, вставив вызов AsEnumerable, AsAsyncEnumerable, ToList или ToListAsync.
А это сущность Movie:
публичный класс Movie { публичный идентификатор строки {get; набор; } общедоступная строка Title {get; набор; } общедоступная строка? Описание {получить; набор; } общественный DateTimeOffset MovieStart {получить; набор; } общественный DateTimeOffset MovieEnd {get; набор; } общедоступная строка? LanguageId {получить; набор; } } Редактирование №1: Добавлен объект «Кино»
Я пытаюсь узнать, есть ли какой-либо фильм, который вот-вот начнется, поэтому проверьте before или он уже начался, следовательно, проверьте after. Я использую DateTimeOffset для отслеживания времени, поскольку использую Postgres.
И вот мой запрос, чтобы узнать, есть ли какой-либо фильм: я ожидаю, что в определенное время будет один фильм, а если его нет, то он должен вернуть ноль.
var now = DateTimeOffset.Now; вар до = сейчас.AddMinutes(-15); вар после = сейчас.AddMinutes(10); вар фильм = ждут _context.Movies.SingleOrDefaultAsync(rx => rx.LanguageId == request.LanguageId && rx.MovieStart = после); Но я получаю эту ошибку, как показано ниже, и подозреваю, что эта часть предложения: && rx.MovieStart = after
Выражение LINQ 'DbSet() .Where(s => s.LanguageId == __request_LanguageId_0 && s.MovieStart = __after_2)' не удалось перевести. Либо перепишите запрос в форме, которую можно перевести, либо явно переключитесь на клиентскую оценку, вставив вызов AsEnumerable, AsAsyncEnumerable, ToList или ToListAsync.
А это сущность Movie:
публичный класс Movie { публичный идентификатор строки {get; набор; } общедоступная строка Title {get; набор; } общедоступная строка? Описание {получить; набор; } общественный DateTimeOffset MovieStart {получить; набор; } общественный DateTimeOffset MovieEnd {get; набор; } общедоступная строка? LanguageId {получить; набор; } } Редактирование №1: Добавлен объект «Кино»
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Выражение LINQ не удалось перевести при использовании OData Framework с DTO.
Anonymous » » в форуме C# - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Выражение LINQ не удалось перевести при использовании OData Framework с DTO.
Anonymous » » в форуме C# - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-