2011-08-18 102 views
0

一個特定的數字。如果我寫只檢索的子記錄

db.Topics.Include("ChildTopics") 

然後它給所有孩子的意見。但我想要的只是「童話創建日期」排序的前兩名兒童話題。

回答

0

這是不可能通過包含方法僅包含前兩個。 在你的情況,你可以這樣做:

var firstTwo = from topic in datacontext.Topics 
    select new { Topic= topic, ChildTopic= topic.ChildTopics.OrderBy(c => c.childtopic_created_date).Take(2) }; 
+0

,我會用這種方式來獲取數據,但我得到類型轉換錯誤 我的代碼是 IQueryable的 latestTopics =(IQueryable的)db.Topic.Select(_x => 新 { 主題= _x, A = _x.A,//一些對象 B = _x.B,//一些對象 ChildTopics = _x.ChildTopics.OrderBy (e => e.create ddate).Take(2) }); – Helen

+0

我收到此錯誤 無法投射類型爲'System.Collections.Generic.List'1 [<> f__AnonymousType0'4 [Topic,A,B,System.Collections.Generic.IEnumerable'1 [Topic]] ]'鍵入'System.Linq.IQueryable'1 [主題]'。 – Helen

+0

與選擇(新..)你會得到一個IEnumerable ,所以這是正常的,有一個轉換錯誤。避免投射,讓它成爲「var latestTopics = db.Topic ...」然後使用創建的屬性(Topic,A,B,ChildTopics) – tahir

0

不包含所有依賴的早期負荷,但我不知道的方式對這個實現應用的限制。

的另一種方法是塑造的結果,如:

var comments = db.Topics.Select(_x=> 
        new{ 
         Topic = _x, 
         TopTwoChildTopics = _x.ChildTopics.Top(2) 
         }); 
+0

感謝克拉姆,是有辦法,我可以用它來與IQueryable的 自當我嘗試鍵入cast時拋出以下錯誤 無法投射「System.Collections.Generic.List'1 [<> f__AnonymousType0'4 [Topic,System.Collections.Generic.IEnumerable'1 [Topic]] ]'鍵入'System.Linq.IQueryable'1 [主題]'。 – Helen

+0

如果您嘗試進行投射時會出現此錯誤,因爲上述結果屬於匿名類型,請嘗試執行進一步選擇以獲取主題。 – KRam