Группировка по и где в EF Core 3.1 - PullRequest
0 голосов
/ 26 марта 2020

Мы обновили сервис с Net Core 2.1 до 3.1. Благодаря помощи в другом вопросе мы исправили большое количество запросов, которые вызывали проблемы, но у нас все еще возникают проблемы, когда группировка по объединяется с Where.

Это оригинальный запрос (после добавление ToList, чтобы он работал после конвертации 3.1

var charDesc = _context.Descriptions.Where(x => x.DescriptionType == DescriptionType.Characteristic).ToList()
                                   .GroupBy(x => x.DescriptionKey).ToDictionary(x => x.Key, x => x.ToList());

Мы предприняли несколько изменений этого, последний из которых

var charDesc = _context.Descriptions.GroupBy(x => x.DescriptionKey)
                       .Select(x => new { x.Key, 
                              DescriptionString = x.Where(y => y.DescriptionType == DescriptionType.Characteristic)
                                                   .Select(y => y.DescriptionString).First() })
                       .ToDictionary(x => x.Key, x => x.DescriptionString);

Это приводит к ошибке, что linq Выражение. Куда не удалось перевести. Либо переписать запрос в форме, которую можно перевести, либо явно переключиться на оценку клиента, вставив вызов либо AsEnumerable (), AsAsyncEnumerable (), ToList (), либо ToListAsyn c ( )

У меня было много проблем с поиском хорошего ресурса для написания запросов linq с group by в 3.1. Как правильно объединить Group By и Where?

...