我试图通过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);
答案 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。