2014-10-01 97 views
0

我有一個查詢,看起來像這樣:通過導航屬性屬性的EF命令?

db.Items.Where(c => c.Enabled) 
     .OrderBy(c => c.Vendor.Category.Select(b=> b.OrderPriority)) 
     .ToList(); 

我收到一個錯誤說我需要實現IComparable ...我不知道我在做正確的事情 - 我只是想訂購我的物品OrderPriorityCategory的財產。有什麼方法可以使用導航屬性的屬性進行排序?

回答

0

基本上,您正試圖通過OrderPriority s的集合訂購Items。這是因爲Vendor有多個Categories(或可能有,因爲它是1-n關聯)。

我不確定是否有可能表達您想表達的內容。如果您想訂購Items的最高OrderPriority在其Vendor的分類中找到,您可以做

db.Items.Where(c=>c.Enabled) 
     .OrderBy(c => c.Vendor.Category.Max(b=> b.OrderPriority))