Как правило, избегайте использования не сопоставленных свойств в запросе LINQ to Entities.Они не могут быть переведены в SQL, и даже если EF Core поддерживает оценку на стороне клиента, доступ к свойствам навигации проблематичен, поскольку они еще не загружены во время оценки.
Вы можете использовать свойства навигации в LINQ to Entitiesзапрос (который на самом деле предпочтительнее явных объединений), но с явным выражением , то есть не скрыт за неотображенным свойством:
var query = Database.Forums.Where(f => f.Id == id).Select(f => new
{
f.Title,
Topics = f.Topics.OrderByDescending(t => t.LastPostedDate).Select(t => new
{
t.TopicId,
FirstPostId = Posts.OrderBy(p => p.PostedDate).Select(p => (int?)p.PostId).FirstOrDefault(),
})
}).ToList();
(не уверен, что такое LastPostedDate
- не отображаетсяв размещенной модели, и надеюсь, что это не еще одно не нанесенное на карту свойство. Но вы поняли).