我创建了一个变量,它返回数据库中菜单的列表ID。然后我将变量放在另一个返回列表中的菜单的查询中。我的问题是我不断收到错误无法将System.Collections.Generic.List<int?>
隐式转换为int?
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 :(得分: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();
答案 1 :(得分:3)
此处的问题是,getmenuids
是int?
值的集合,但您将其与r.MenuID
进行比较,该int?
键入getmenuids
。要解决此问题,您需要搜索r.MenuId
db.Meals.Where(r => getmenuids.Contains(r.MenuID)).ToList();
{{1}}
答案 2 :(得分:0)
您正在将列表与MenuID进行比较。 getmenuids是一个列表。
r.MenuID = getmenuids