如何在实体框架中指定包含的位置

时间:2016-08-22 04:12:31

标签: entity-framework include where-clause

我多次遇到过这个问题,我想知道处理Include中Where子句的最佳方法。这是我的示例代码

IEnumerable<Data.StoreMenu> dataStoreMenus = _context.StoreMenus
                .Include(sm => sm.MenuCategories.Where(x => !x.IsDeleted))
                .Where(sm => sm.StoreId == storeId && !sm.IsDeleted).ToList();

场景是我有一个菜单,菜单有多个菜单类别。菜单和菜单类别都有一个标记,用于标记已删除的项目。现在我想只检索未删除的菜单以及非删除的菜单类别。

1 个答案:

答案 0 :(得分:0)

创建子查询:

var result = _context.StoreMenus
.Where(sm => sm.StoreID == storeId && !sm.IsDeleted)
.Select(sm=> 
   new { Menu=sm, MenuCats = sm.MenuCategories.Where(smc => !smc.IsDeleted) })
.ToList();

可能希望看一下类似的内容:here