【问题标题】:Retrieve data from many to many relationship in asp.net mvc linq在asp.net mvc linq中从多对多关系中检索数据
【发布时间】:2013-01-23 16:14:25
【问题描述】:

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

我有 3 张桌子

  • Employee
  • role
  • RoleInemployee

第三个表有两列:empidroleid

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

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

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

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

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

任何身体都可以帮忙吗?

【问题讨论】:

  • 查看编辑后的答案...查看已编辑的问题。

标签: asp.net-mvc linq entity-framework


【解决方案1】:

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));

【讨论】:

    【解决方案2】:

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

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

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

    编辑:删除 RoleInEmployee 代码

    【讨论】:

    • 对于第二种解决方案:在 EF 中,RoleInEmployee 类可能不存在(这是一个对象世界,而不是数据库世界,对象中不需要它)。
    • 是 RoleInEmployee 类不存在。我们可以为特定角色加载员工对象的数据吗。你能告诉我如何为此进行 linq 查询
    猜你喜欢
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    相关资源
    最近更新 更多