实体框架从另一个EF选择查询获得的ID列表中进行选择

ABE*_*ILA 2 .net c# asp.net-mvc

在此处输入图片说明

我正在尝试使用where语句从EF查询中获取ItemsEntity。该条件从另一个EF查询中获得item_id,该查询返回了多个item_id。

var item_id = (from n in db.OrderDetail where n.OrderId == id select n.item_id);
var itemEntity = (from m in db.ItemsEntity where *m.item_id==item_id* select m);
Run Code Online (Sandbox Code Playgroud)

Shy*_*yju 8

Contains想要在Where子句中使用集合时可以使用method

var listOfIds = (from n in db.OrderDetail where n.OrderId == id select n.item_id);
var itemEntity = (from m in db.ItemsEntity where listOfIds.Contains(m.item_id) select m);
Run Code Online (Sandbox Code Playgroud)

请记住,使用上面的代码,itemEntity变量将是collection。如果要单个项目,请使用FirstOrDefault()First()所需的方法。

上面的代码也可以写成下面的LINQ方法链

var listOfIds = db.OrderDetail.Where(n=>n.OrderId == id).Select(x=>x.item_id);
var itemEntity = db.ItemsEntity.Where(m=>listOfIds.Contains(m.item_id));
Run Code Online (Sandbox Code Playgroud)