У меня есть простая БД SQL Server, содержащая данные для пользователей и сообществ.Любой пользователь может быть членом любого количества сообществ, поэтому у меня есть 3 таблицы: Users
, Communities
и Map
и соответствующие классы POCO C #.Я использую EntityFramework, чтобы получить словарь всех сообществ и их членов:
public Dictionary<Community, List<User>> GetData()
{
var communitiesAndUsers =
from community in DbContext.Communities
from map in DbContext.CommunityUserMap.Where(c => c.Community == community )
select new { Community = community, User = map.User };
var result = new Dictionary<Community, List<User>>();
foreach (var communityGroup in communitiesAndUsers.ToList().GroupBy(x => x.Community.Id))
{
var community = communityGroup.First().Community;
var users = communityGroup.Select(g => g.User).ToList();
result.Add(community, users);
}
return result;
}
Теперь мне нужно поддержать разбиение на страницы в этом методе:
public Dictionary<Community, List<User>> GetData(int page, int communitiesPerPage)
И у меня есть требование сделать этоиспользуя 1 SQL-запрос.Как мне изменить мой метод для поддержки этого?