列出查询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();

列出查询Linq中的变量

你有一个问题,因为你使用==(比较单个元素到列表)而不是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();

这里的问题是getmenuidsint?值的集合,但您将其与类型为int?r.MenuID进行比较。要解决这个问题,您需要在getmenuids中搜索r.MenuId

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

您正在比较列表和MenuID。Getmenuids是一个列表。

r.MenuID = getmenuids