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

Lau*_*nce 3 linq entity-framework

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

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

if(PreLoadCustomer)
     query.Include("Customer")
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Tho*_*que 6

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

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

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


var query =
    from o in orders
    ...
Run Code Online (Sandbox Code Playgroud)