我需要一些帮助来根据ASP.NET MVC控制器中的子查询结果执行选择查询。 默认情况下,Get方法返回对象列表...例如:
public IQueryable<Order> GetOrdersByID(string id)
{
return db.Orders.Where(e => e.orderId == id);
}
如果我想(select all products where product id is in (select product IDS from orders where order id = ID)
)
如何使用以下方法在控制器中实现:
public IQueryable<Product> GetOrdersByID(string id)
{
/// This line is wrong what is the correct one please....
return db.Products.Where(p => p.id IN (db.Orders
.Where(e => e.orderId == id));
}
答案 0 :(得分:3)
您可以在此处使用IEnumerable<T>
的{{1}}扩展程序方法:
Any
注意:请注意 public IQueryable<Product> GetOrdersByID(string id)
{
return db.Products
.Where(p => db.Orders.Any(i => i.orderId == p.id && i.orderId == id));
}
方法具有O(N)的复杂性,并且完整解决方案实际上具有O(N的复杂性) •M)因为对于每个Any
,在最坏的情况下,您可以扫描完整的Product
集合。