过滤dbcontext对象中的记录

时间:2015-06-29 10:17:26

标签: c# asp.net-mvc linq entity-framework-6

我正在使用Entity Framework 6数据库第一种方法。

我有三张桌子:

1.SystemRoles

2.MasterAppMenu

3.EmployeeRoleMenuMappings

SystemRole可以有多个MasterAppMenu,因此这是一对多的关系。

我想这样做。

PictureCallback jpegCallback

我想过滤MasterAppMenu表中具有ParentMenuId null的SystemRoles的记录。 SystemRoles具有Icollection对象EmployeeRoleMenuMappings,它具有此MasterAppMenu属性。

请告诉我如何实现这一点,我知道它可以在视图方面完成,但我只想在控制器端进行此操作

1 个答案:

答案 0 :(得分:0)

如果您需要所有具有任何null MasterAppMenu ParentMenuIds的EmployeeRoleMenuMappings:

var roleMenuMappings = entities.EmployeeRoleMenuMappings
    .Where(m => m.MasterAppMenu.ParentMenuId == null);

您也可以从SystemRoles级别执行此操作:

var systemRolesWithMenuMappings = entities.SystemRoles
    .Where(x => x.EmployeeRoleMenuMappings.Any(m => m.MasterAppMenu.ParentMenuId == null);

或MasterAppMenus级别:

var roleMenuMappings = entities.MasterAppMenu.Where(w => w.ParentMenuId == null);

基本上,您使用Where()来过滤记录。在Where()中使用Any(),因为它返回谓词或布尔值。

这些查询仅显示具有空值的项目。如果您只想要DONT具有空值的项目,只需将其更改为代码中的!= null