Второй ответ, теперь я перечитал оригинальный вопрос.
Вы уверены, что указанный вами SQL действительно верен? Он не даст 5 лучших групп в каждой теме - он сопоставит каждую тему только с 5 основными группами в целом .
Короче говоря, я подозреваю, что вы получите исходный SQL, если вы используете:
var q = from t in dc.Themes
join g in dc.Groups.OrderBy(z => z.TotalMembers).Take(5)
on t.K equals g.ThemeK into groups
select new { t.Name, Groups = groups };
Но я не думаю, что это то, что вы на самом деле хотите ...