ASP.NET API控制器中的复杂OData查询

时间:2014-05-05 22:15:28

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

我需要一些帮助来根据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)); 
    }

1 个答案:

答案 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集合。