如何指定包含在 entity framework 中的位置

How To specify Where in Include in entity framework

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

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

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

创建子查询:

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