分组依据和计数ASP.NET MVC
本文关键字:ASP NET MVC | 更新日期: 2023-09-27 18:26:43
我正在尝试制作一个简单的记录管理应用程序。我想得到每个部门的员工总数。到目前为止我有这个。
return Context.Employees
.GroupBy(e => e.DepartmentID)
.Select(x => new { Employee = x.Count() });
但它给了我一条红色的摆动线,上面写着我可能错过了一个演员阵容。
无法隐式转换类型System.Linq.IQueryable<匿名类型#>到System.Collections.Generic.IEnumerable<SimpleRMA.型号.部门>。存在显式转换(是否缺少强制转换?)
这是我想要的结果:
DepartmentName | Employees
Department1 | 4
Department2 | 6
我应该如何在lambda表达式中执行此操作?感谢
部门类别:
public class Department
{
public int DepartmentID { get; set; }
public string DepartmentName { get; set; }
public string Location{ get; set; }
public virtual List<Employee> Employees { get; set; }
}
员工类别:
public class Employee
{
public int EmployeeID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public DateTime Birthday { get; set; }
public int DepartmentID { get; set; }
public virtual Department Department { get; set; }
}
我建议改为获得部门。看起来您在这里使用的是EntityFramework。你为什么不直接做return Context.Departments.Include("Employees")
呢。这将为您提供填写了员工的部门对象集合。您可以通过执行departmentObject.Employes.count()来获得每个部门的员工数量。
您返回的是匿名类型,如果不使用dynamic关键字作为返回值,则不支持该类型。实现像这样的模型类并返回它。
public class DepartmentEmployeesModel
{
public string DepartmentName { get; set; }
public string Employees { get; set; }
}
return Context
.Employees
.GroupBy(e => e.DepartmentID)
.Select(x => new DepartmentEmployeesModel { DepartmentName = x.Key, Employees = x.Count() }).ToList();
并将您的方法签名更改为
IEnumerable<DepartmentEmployeesModel> YourMethodName()