2014-03-19 26 views
1

我有用戶實體並且涉及到很多產品實體,我需要一種方法來獲取用戶實體的子集而不是所有產品的產品。獲取實體導航屬性的子集

var user = User.Include("Product").ToList(); // it returnes all the products. 

我需要一種方式來返回用戶只有15個產品。

在此先感謝...

回答

2

,無法篩選或在其中加載到導航屬性其他方式影響的數據。當你使用急切加載或相關實體的延遲加載時,EF只是在沒有任何條件的情況下執行LEFT OUTER JOIN。

您可以與用戶返回匿名對象和它的15種產品:

var query = from u in db.Users 
      select new { 
       User = u, 
       Top15Products = u.Products.Take(15) 
      }; 

注意 - 如果你有那麼用戶實體裝載可以裝載相關實體的過濾收集:

var user = db.Users.Find(1); 

db.Entry(user) 
    .Collection(u => u.Products) 
    .Query() 
    .Take(15) 
    .Load(); 

這種方法在Loading Related Entities文章中有描述。

+0

感謝您的回覆,我已經知道這個解決方案,但需要看看是否有更優雅的方式。 – Wasim

+1

非常感謝,第二種方法正是我所需要的。 '.Query()'函數的使用是我在這裏失蹤的部分。 –