Почему .net core 2.2. если это
var posBlagajnik = rampa.Doc.Where(x => x.SmjenaId == smjena.Id && (x.DocTipNavigation.IsRacun || x.DocTipNavigation.IsStorno)).GroupBy(x => x.User.ImeIprezime)
.Select(x => new PosBlagajnik() { ime = x.Key, brojRacuna = x.Count(), inkas = x.Sum(f => f.Iznos.Value) }).ToList();
Преформа в памяти, но не в SQL.
Мой контекст предупреждает меня
Не удалось перевести выражение LINQ «Count ()», и оно будет
оценивается на месте.
Я хочу отправить в SQL что-то вроде этого.
select
AspNetUsers.ImeIprezime
,COUNt(*) as brojRacuna
,sum(iznos) as inkas
from doc
inner join AspNetUsers on doc.user_id=AspNetUsers.id
inner join dokumenti on doc.doc_tip=dokumenti.id
where doc.smjena_id=79 and (dokumenti.isRacun = 1 or dokumenti.isStorno=1)
group by AspNetUsers.ImeIprezime
Редактировать после комментариев
Благодаря помощи @IvanStoev, мне удалось написать ef, который предшествует SQL-агрегатам.
Вот новый вопрос по исследованию
Когда я изменил свой ef-запрос на
var posBlagajnik = rampa.Doc
.Where(x => x.SmjenaId == smjena.Id && (x.DocTipNavigation.IsRacun || x.DocTipNavigation.IsStorno))
.GroupBy(x => x.User.ImeIprezime)
.Select(x => new PosBlagajnik() { ime = x.Key, brojRacuna = x.Count(),
inkas = x.Sum(f => f.Iznos)
}).ToList();
Ef начать выполнение агрегирования sql.
Изначально я использовал x.Sum(f => f.Iznos.Value)
, потому что f.Iznos имеет значение Nullable (десятичное число?), А inkas на PosBlagajnik не имеет значения Nullable. Используя .Value я конвертировал decima? в десятичный.
Похоже, это сбивает с толку ef для локальной обработки всех запросов.
Это нормально для ef или это какая-то ошибка?