在查询Linq中列出变量

时间:2014-03-19 00:43:05

标签: c# asp.net linq

我创建了一个变量,它返回数据库中菜单的列表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();

3 个答案:

答案 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)

此处的问题是,getmenuidsint?值的集合,但您将其与r.MenuID进行比较,该int?键入getmenuids。要解决此问题,您需要搜索r.MenuId db.Meals.Where(r => getmenuids.Contains(r.MenuID)).ToList();

{{1}}

答案 2 :(得分:0)

您正在将列表与MenuID进行比较。 getmenuids是一个列表。

r.MenuID = getmenuids