列出查询Linq中的变量
本文关键字:变量 Linq 查询 | 更新日期: 2023-09-27 17:50:48
我创建了一个变量,它从数据库中返回菜单的列表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();
这里的问题是getmenuids
是int?
值的集合,但您将其与类型为int?
的r.MenuID
进行比较。要解决这个问题,您需要在getmenuids
中搜索r.MenuId
db.Meals.Where(r => getmenuids.Contains(r.MenuID)).ToList();
您正在比较列表和MenuID。Getmenuids是一个列表。
r.MenuID = getmenuids