2014-03-19 71 views
1

我創建了一個變量,該變量返回數據庫中菜單的列表id。然後,我將變量放在另一個查詢中,該查詢返回列表中的用餐。我的問題是,我一直recieving誤差不能因爲你使用==(相對於一個列表中的單個元素)型System.Collections.Generic.List<int?>隱式轉換爲int?在查詢中列出變量Linq

var getmenuids = (from r in db.Menus 
        where (r.Restaurantid == currentrestaurant) 
        select r.Id).ToList(); 

var meals = db.Meals.Where(r => r.MenuID = getmenuids).ToList(); 
+0

db.Meals.Where(R => getmenuids.Contains(r.MenuID))ToList()。 – JleruOHeP

回答

5

您遇到的問題,而不是Contains()(搜索爲中的一個元素的列表)。

var meals = db.Meals.Where(r => getmenuids.Contains(r.MenuID)).ToList(); 

你可以結合這太..這樣的事情:

var meals = (from meal in db.Meals 
      join menu in db.Menus on meal.MenuID equals menu.Id 
      where menu.Restaurantid == currentrestaurant 
      select meal).ToList(); 
0

你比較菜單ID列表。 getmenuids是一個列表。

r.MenuID = getmenuids 
3

的這裏的問題是,getmenuidsint?值的集合,但你把它比作r.MenuID被輸入到int?。爲了解決這個問題,你需要搜索getmenuidsr.MenuId

db.Meals.Where(r => getmenuids.Contains(r.MenuID)).ToList();