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

最佳答案

您遇到了问题,因为您使用的是==(将单个元素与列表进行比较)而不是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();

关于c# - 查询Linq中的列表变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22494029/

10-13 06:56