2009-01-06 94 views
29

我有以下查詢linq實體。問題是它似乎沒有加載「標籤」關係,即使我已經爲它包含了一些東西。它工作正常,如果我不加入標籤,但我需要這樣做。加入幷包括在實體框架

  var items = from i in db.Items.Include("Tags") 
         from t in i.Tags 
         where t.Text == text 
         orderby i.CreatedDate descending 
         select i; 

是否有任何其他方式問這個查詢?也許分裂它或什麼?

回答

50

那麼,包括矛盾的地方。包含說,「加載所有標籤」。在哪裏說,「加載一些標籤。」當查詢和包含之間存在矛盾時,查詢將始終獲勝。

返回所有標籤的任何項目與至少一個標籤==文字:

 var items = from i in db.Items.Include("Tags") 
        where i.Tags.Any(t => t.Text == text) 
        orderby i.CreatedDate descending 
        select i; 

(未經檢驗的,因爲我沒有你的DB /型號)

這是a really good, free book on LINQ

+0

任何有關如何以其他方式編寫它的建議,以便我可以獲取標籤並對它們執行條件。這在常規SQL中會很簡單。 – Olaj 2009-01-06 15:29:15