LINQ查询:在运行时动态添加包含

时间:2012-02-06 19:26:38

标签: linq entity-framework

我有一个方法GetOrder(int OrderID),它运行LINQ查询并返回一个订单。可以在查询中预加载许多对象属性(即使用Include()),例如, DeliveryMethod,Customer,CustomerBillingAddress等。我希望该方法允许调用者通过方法的参数指定预加载的属性。毋庸置疑,我不想在方法中明确地写出每个可能的LINQ查询。

因此可以对主查询进行编码,然后动态添加.Includes,例如

if(PreLoadCustomer)
     query.Include("Customer")

注意:我知道有延迟加载 - 这不起作用 - 相关对象需要立即可用。

由于

1 个答案:

答案 0 :(得分:5)

  

因此可以对主查询进行编码,然后动态添加.Includes

实际上,首先添加Includes,然后自己编写查询会更有意义:

ObjectQuery<Order> orders = db.Orders;
if(PreLoadCustomer)
     orders = orders.Include("Customer");


var query =
    from o in orders
    ...