我正在尝试使用 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);
最佳答案
当您想在 Where
子句中使用集合时,可以使用 Contains
方法
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));
关于c# - Entity Framework 从另一个 E.F 选择查询获得的 ID 列表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45941679/