LINQ Присоединиться к таблице и группе по ошибке - PullRequest
0 голосов
/ 28 июня 2018

Мне нужно объединить две таблицы и сгруппировать по столбцу. Также мне нужно выбрать сумму одного столбца. Я уже пробовал какое-то решение из другого вопроса, но это решение не объясняет, как это сделать с помощью sum (), который является моим самым важным столбцом, который мне нужно выбрать

вот мое заявление SQL. Я уже пробовал это, и это возвращало результат, который я ожидал

SELECT lt.Name, SUM(l.QuotaDays)
FROM EmployeeLeaveQuota l
JOIN EmployeeLeaveQuotaType lt ON l.EmployeeLeaveQuotaTypeId =     lt.EmployeeLeaveQuotaTypeId
WHERE l.EmployeeId = '12345678'
GROUP BY l.EmployeeLeaveQuotaTypeId, lt.Name

вот мой LINQ

var leaveQuota = await (from l in DB.EmployeeLeaveQuota
                                join lt in DB.EmployeeLeaveQuotaType on l.EmployeeLeaveQuotaTypeId equals lt.EmployeeLeaveQuotaTypeId
                                where l.EmployeeId == employeeId
                                where l.ValidUntil >= DateTime.UtcNow
                                group new { l, lt } by new
                                {
                                    l.EmployeeLeaveQuotaTypeId,
                                    l.QuotaDays,
                                    lt.Name
                                } into g
                                select new LeaveTypeModel
                                {
                                    EmployeeLeaveQuotaTypeId = g.Key.EmployeeLeaveQuotaTypeId,
                                    LeaveName = g.Key.Name,
                                    QuotaDays = g.Sum(x => x.l.QuotaDays)
                                }).ToListAsync();

но когда я бегу, появляется ошибка

InvalidOperationException: ошибка, сгенерированная для предупреждения 'Microsoft.EntityFrameworkCore.Query.QueryClientEvaluationWarning: выражение LINQ' GroupBy (new <> f__AnonymousType1 3(EmployeeLeaveQuotaTypeId = [l].EmployeeLeaveQuotaTypeId, QuotaDays = [l].QuotaDays, Name = [lt].Name), new <>f__AnonymousType0 2 (l = [l], lt = [lt])) 'не может быть переведен и будет оцениваться на месте. '. Это исключение можно подавить или зарегистрировать, передав идентификатор события «RelationalEventId.QueryClientEvaluationWarning» методу «ConfigureWarnings» в «DbContext.OnConfiguring» или «AddDbContext».

Кто-нибудь знает почему? пожалуйста помоги спасибо

...