2012-10-11 123 views
0

所以我工作的一個自制論壇(ASP.net MVC4)和我目前顯示所有的論壇,在控制器我做這個簡單的查詢:獲取最新的每個論壇的帖子

return View(db.Forums.ToList()); 

但現在我想能夠也包括頂級職位。 (一個論壇實體有一個Post的集合,Post有一個Date,我想以此命令,然後做一個採取(1))。

我嘗試類似:

return View(db.Forums.Include(z=>z.Posts.OrderBy(x=>x.Date).Take(1)).ToList()); 

然後我得到的錯誤:

The Include path expression must refer to a navigation property defined on the type. Use dotted paths for reference navigation properties and the Select operator for collection navigation properties. Parameter name: path

PS:這裏是當前視圖

@model IEnumerable<MyProject.Data.Forum> 

@{ 
    ViewBag.Title = "Forum Index"; 
} 

<h2>Forums</h2> 

<table class="Forum"> 
    <tbody> 
    <tr>Main forums</tr> 
    @foreach (var item in Model) 
    { 
     <tr class="ForumItem"> 
      <td><a href="[email protected]">X</a></td> 
      <td><p><a href="[email protected]">@item.Name</a></p><span>@item.Description</span></td> 
      <td>@item.PostCount</td> 
      @foreach(var post in item.Posts) 
      { 
       <td>@post.Title</td> 
      } 
     </tr> 
    } 
    </tbody> 
</table> 

任何人都知道一個解決方案?

回答

2

你可以做這樣的:

return View(db.Forums.Select(f => new { 
     Forum = f, 
     FirstPost = f.Posts.OrderBy(x=>x.Date).First() } 
    ).ToList() 
); 
+0

不起作用它不知道的第一篇文章,然後我必須做出對類FirstPost屬性,使其工作? – Maximc

+0

是的,這將返回一個新的匿名類,其中包含一個Forum屬性和一個Firstpost屬性。這將需要更改您使用返回的數據的方式。 – cjk

+0

(我將其更改爲firstordefeault,因爲並非所有論壇都已發佈帖子)現在我收到錯誤消息:傳入字典的模型項目類型爲'System.Collections.Generic.List'1 [<> f__AnonymousType5'2 [Smartp1ck。 Data.Forum,Smartp1ck.Data.Post]],但是這個字典需要一個'System.Collections.Generic.IEnumerable'1 [Smartp1ck.Data.Forum]'類型的模型項。 – Maximc

相關問題