Это может выполнить то, что вы хотите сделать.
var mostPopularTopic = entityContainer.Topics
.OrderByDescending(t => t.Replies.Count())
.FirstOrDefault();
if(mostPopularTopic != null) // If there were any topics...
{
// ...
}
Я полагаю, это будет ужасно,
Лучшим вариантом может быть денормализация ваших данных (слегка) и добавление столбца подсчета ответов в таблицу Topic
. Затем вы можете проиндексировать этот столбец, выполнить простую сортировку и получить строку. Это позволит избежать сканирования всей таблицы Topics
и количества (во время запроса) для каждой записи Replies
.
Компромисс будет в том, что вы должны быть осторожны, чтобы гарантировать, что счетчик Replies
всегда обновляется, или жить с результатами, которые не всегда полностью обновлены, и выполнять фоновую работу для восстановления этих значений.