我在使用 linq 检索多对多关系中的数据时遇到问题。
我有3张桌子
-
Employee
-
role
-
RoleInemployee
第三个表有两列:empid
和 roleid
存储在第三个表中,或者您可以说分配给多个员工的一个角色。
我只想使用 linq 检索具有特定角色 ID 的员工。
我在员工模型中使用导航属性,例如
public virtual ICollection<Role> role {get;set;}
此导航属性为我提供了特定员工的角色,但我想检索分配了特定角色的员工数据。
任何身体都可以提供帮助吗?
Count 有一个重载,将谓词作为参数,所以你可以这样做
var count = db.Employees.Count(emp=> emp.role.Any(r=> r.Id == 12));
编辑
让员工担任特定角色
var employees = db.Employees.Where(emp => emp.role.Any(r => r.Id == 12));
如果我正确理解了这个问题,您希望使用 LINQ 将员工数设置为特定角色 ID。
如果您的实体框架 Employee 类包含角色列表,则可以对员工列表执行以下操作,其中 123 是您要查找的 RoleID:
employeeList.Where(x => x.Roles.Where(y => y.RoleID == 123)).Count();
编辑:删除了员工角色代码