this query for make list of department every department have list of Employees then every employee has list of data about his attendance for that I use nested group in multiple layer then use nested select to display data but i get error ""The LINQ expression could not be translated" then i use group in one layer then use select , into select i use group by then select but also get the same error i don't Know what is the wrong part in my code
public async Task<dynamic> GetPermissionByDept(DateTime fromDay, DateTime toDay)
{
return await (
from perm in _db.Permissions.Include(p => p.PermissionType)
.Include(p => p.Employee).ThenInclude(e => e.OrgUnit)
where perm.DayDate >= fromDay && perm.DayDate <= toDay
where perm.Employee.IsActive && perm.IsApproved
let department = _db.OrgUnits
.Where(o => perm.Employee.OrgUnit.Hid.IsDescendantOf(o.Hid) && o.Hid.GetLevel() <= 3)
.OrderByDescending(o => o.Hid.GetLevel())
.Select(o => o.Name)
.FirstOrDefault()
group new
{
Employee = new EmployeeWithDept(perm.Employee, department),
DepartmentName = department,
PermissionType = perm.PermissionType.Name,
perm.DayDate,
perm.FromTime,
perm.ToTime,
PermMinutes = TimeSpan.FromMinutes(perm.ToTime.Subtract(perm.FromTime).TotalMinutes),
}
by department into deptGroup
from empGroup in
(
from department in deptGroup
group department by department.Employee
)
group empGroup by deptGroup.Key into empData
select new
{
empData.Key,
EmployeeDetails = empData.Select(p => new
{
p.Key.FullNameAr,
p.Key.FullNameEn,
TotalMinutes = TimeSpan.FromMinutes(p.Sum(x => x.PermMinutes.TotalMinutes)),
PermissionCount = p.Count(),
Permissions = p.Select(x => new
{
x.PermissionType,
x.DayDate,
x.FromTime,
x.ToTime,
x.PermMinutes
}).ToList()
}).ToList()
})
.AsNoTracking()
.ToListAsync();
}