Использование GroupBy в Linq: GroupBy на стороне клиента не поддерживается - PullRequest
0 голосов
/ 22 апреля 2020

Как я могу использовать Linq и сгруппировать список? У меня есть следующее выражение linq для получения данных из базы данных, как я могу изменить свой код для группировки результатов по полю PartyName?

var RParty = await context.Parties
                           .Where(b => b.ID == request.ID)
                           .ToListAsync();

Я пытался

   var RParty = await context.Parties
                               .Where(b => b.ID == request.ID)
                               .GroupBy(b => b.PartyName)
                               .ToListAsync();

Но я получаю это ошибка

System.InvalidOperationException: Client side GroupBy is not supported.

1 Ответ

0 голосов
/ 22 апреля 2020

Чтобы развернуть ссылку на github, размещенную mjwills, здесь есть следующие проблемы: вы можете выполнять два разных GroupBys: SQL Group By или C# LINQ Group By.

One Решением здесь является переключение порядка ваших вызовов:

var RParty = await context.Parties
                           .Where(b => b.ID == request.ID)
                           .ToListAsync()
                           .GroupBy(b => b.PartyName); // <-- move after ToList

При вызове ToList данные будут обрабатываться как тип C#, и функция LINQ GroupBy должна работать.

Однако, Вы должны быть осторожны, потому что после вызова ToList данные будут возвращены из базы данных и сохранены в памяти на сервере. В зависимости от того, насколько большой будет таблица Сторон, она может вызвать проблемы с производительностью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...