Допустим, у нас есть: Сотрудник класс (свойство: EmployeeID, EmployeeName, DepartmentID, Department - как свойство навигации) и Department класс (свойство: DepartmentID, DepartmentName, Employees - как навигационная опора). Связь между этими двумя таблицами - один ко многим. Теперь конкретный пример:
Сотрудник таблица
EmployeeID EmployeeName DepartmentID
1 Peter 1
2 Anna 1
3 John 2
Отдел таблица
DepartmentID DepartmentName
1 IT
2 Marketing
3 HR
Конечный результат должен быть отображение каждого отдела (DepartmentID, DepartmentName, NumOfEmployees) независимо от того, есть ли у него сотрудники с количеством сотрудников в отделе, например: 1, IT, 2 | 2, Маркетинг, 1 | 3, HR, 0.
Мой синтаксис был:
var dbContext.Departments.Include(d => d.Employees).
GroupBy(d => new { d.DepartmentID, d.DepartmentName }).
Select(x => new {
DepartmentID = x.Key.DepartmentID,
DepartmentName = x.Key.DepartmentName,
NumOfEmployees = x.Count()
}).ToList();
Проблема в том, что атрибуту NumOfEmployees присвоено значение 1 для каждого отдела, и я не знаю почему. Как бы выглядел синтаксис LINQ для правильного лямбда-выражения?