Хмм .. Я не уверен, чего ты хочешь достичь. Ваш запрос выглядит нормально. Вы уверены, что результат неправильный? После упорядочения по PostDate результат выглядит, например, как
Data UserId PostGroup
----------- ----------- -----------
3 10 1
2 20 2
2 10 2
1 20 2
После группировки по UserId и PostGroup результат должен выглядеть следующим образом:
UserId PostGroup
----------- -----------
10 1
20 2
10 2
И ваш запрос дает такой результат. Я переписываю ваш запрос, вы можете проверить результат следующим образом:
var posts = context.Posts.OrderByDescending(p => p.PostDate)
.Where(m => context.FollowedUsers.FirstOrDefault(n => n.FollowerId == Id && n.ApplicationUserId == m.ApplicationUserId)) != null || (context.FollowedSites.FirstOrDefault(n => n.ApplicationUserId == Id && n.SiteId == m.SiteId) != null) || m.ApplicationUserId == Id)
.GroupBy(group => new { group.PostGroup, group.ApplicationUserId })
.Select(x => new { x.Key.ApplicationUserId, x.Key.PostGroup })
.Skip(skip).Take(nOfPosts).ToList();