我多次遇到过这个问题,我想知道处理Include中Where子句的最佳方法。这是我的示例代码
IEnumerable<Data.StoreMenu> dataStoreMenus = _context.StoreMenus
.Include(sm => sm.MenuCategories.Where(x => !x.IsDeleted))
.Where(sm => sm.StoreId == storeId && !sm.IsDeleted).ToList();
场景是我有一个菜单,菜单有多个菜单类别。菜单和菜单类别都有一个标记,用于标记已删除的项目。现在我想只检索未删除的菜单以及非删除的菜单类别。
答案 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