2012-02-06 42 views
2

我有一個方法GetOrder(int OrderID),它運行LINQ查詢並返回一個訂單。有許多對象屬性可以被預加載(即,用Include())在查詢中,例如, DeliveryMethod,Customer,CustomerBillingAddress等。我希望方法允許調用者通過方法上的參數來指定哪些屬性被預加載。不用說,我不想在方法中明確寫出每個可能的LINQ查詢。LINQ查詢:在運行時動態添加包含

因此,有可能對主要查詢進行編碼,然後動態地添加.Includes。

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

注意:我知道存在延遲加載 - 這不起作用 - 相關對象需要立即可用。

感謝

+0

你的例子有什麼問題? – 2012-02-06 19:33:37

+0

@LadislavMrnka,什麼是錯誤的是,包括的結果沒有分配回查詢,所以它沒有影響... – 2012-02-06 19:35:45

回答

5

所以是有可能代碼的主查詢,然後添加.Includes動態

其實這會更有意義添加包括第一,然後寫查詢本身:

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


var query = 
    from o in orders 
    ... 
+0

這很好。謝謝! – Laurence 2012-02-08 18:30:35