实体框架从另一个E.F选择查询中获取的ID列表中进行选择

时间:2017-08-29 14:26:24

标签: c# .net asp.net-mvc

enter image description here

我试图通过where语句从E.F查询中获取ItemsEntity。条件从另一个返回多于1个item_id的E.F查询中获取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);

2 个答案:

答案 0 :(得分:4)

如果要在Contains子句中使用集合,可以使用Where方法

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);

请注意,使用上面的代码,itemEntity变量将被收集。如果您需要单个项目,请根据需要使用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));

答案 1 :(得分:0)

在第一个语句的末尾使用First()或FirstOrDefault()使item_id变量成为实际的int类型,而不是现在的IQueriable。