假设我们有:Employee类(道具: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、Marketing、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,但不知道为什么。如何更正lambda表达式LINQ语法?
我想说,这里不需要GroupBy
,可以做如下简单的事情:
var result = dbContext.Departments
.Select(x => new
{
DepartmentID = x.DepartmentID,
DepartmentName = x.DepartmentName,
NumOfEmployees = x.Employees.Count()
})
.ToList();