2016-08-22 122 views
3

我遇到過這個問題很多次了,我想知道處理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

你可以做StoreMenus表,請將isDeleted地方是用假的。加入之間MenuCategories一個連接()方法。我不認爲你想要在.include()中實現。 – DevilSuichiro

+0

謝謝...只是想找到替代品,因爲你提供了一個使用join() – Jay

回答

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