1

我在使用 linq 检索多对多关系中的数据时遇到问题。

我有 3 张桌子

  • Employee
  • role
  • RoleInemployee

第三个表有两列:empidroleid

可以分配给多个角色的员工存储在第三个表中,或者您可以说分配给多个员工的单个角色。

我只想使用 linq 检索具有特定角色 ID 的员工。

我在员工模型中使用导航属性,例如

public virtual ICollection<Role> role {get;set;} 

此导航属性为我提供特定员工的角色,但我想检索分配了特定角色的员工数据。

任何身体都可以帮忙吗?

4

2 回答 2

3

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));
于 2013-01-23T16:41:28.870 回答
1

如果我正确理解了这个问题,您希望使用 LINQ 将员工数量设置为特定角色 ID。

如果您的实体框架 Employee 类包含一个角色列表——您可以对您的员工列表执行以下操作,其中 123 是您要查找的 RoleID:

employeeList.Where(x => x.Roles.Where(y => y.RoleID == 123)).Count();

编辑:删除 RoleInEmployee 代码

于 2013-01-23T16:40:38.313 回答