У меня есть форум, и я подтягиваю список недавно активных тем. Я заказываю темы либо по дате последнего ответа, либо в случае темы, не имеющей ответов, а затем опубликованной даты темы. Следующий запрос работает нормально:LINQ to Entities запрос, генерирующий нечетную ошибку
var topicsQuery = from x in board.Topics
let lastActivityDate = x.Replies.Any()
? x.Replies.OrderBy(y => y.PostedDate).Last().PostedDate
: x.PostedDate
orderby lastActivityDate descending
select x;
Этот запрос отлично работает. Каждый раз, когда страница загружается, темы упорядочены правильно. Тем не менее, теперь у меня есть вызов Ajax, который ищет обновленную деятельность и запускает подобный запрос:
topics = (from x in DBContext.Topics
let lastActivityDate = (x.Replies.Any()
? x.Replies.OrderBy(y => y.PostedDate).Last().PostedDate
: x.PostedDate)
where x.BoardID == boardID
where lastActivityDate > lastTopic.PostedDate
orderby lastActivityDate
select x).ToList<Topic>();
Может кто-нибудь увидеть что-то не так с этим запросом LINQ? Он генерирует следующую ошибку:
LINQ to Entities не распознает метод MyProject.Models.Reply Last [Ответить] (System.Collections.Generic.IEnumerable1) [MyProject.Models.Reply]) и этот метод не может быть переведен в выражение хранилища.
Я не вижу никакой разницы с версией OP, в вы могли бы выделить разницу? –
@Jani: Обновлен ответ с большим контекстом. –
@Mahesh, который может повредить чувака, вы загрузили все темы в памяти, это очень дорогое решение для СУБД, а также Application Server, что не могло быть хорошей идеей –