【问题标题】:Get newest Post of each forum获取每个论坛的最新帖子
【发布时间】:2012-10-11 11:12:00
【问题描述】:

所以我正在开发一个自制论坛(ASP.net MVC4),我目前正在显示所有论坛,在控制器中我做了这个简单的查询:

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

但现在我希望能够包含顶部帖子。 (一个论坛实体有一个 Post 集合,Post 有一个 Date,我想按它排序,然后执行 take(1))。

我尝试类似:

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

然后我得到错误:

包含路径表达式必须引用导航属性 在类型上定义。使用虚线路径进行参考导航 属性和用于集合导航的 Select 运算符 特性。参数名称:路径

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="Index?id=@item.Id">X</a></td>
            <td><p><a href="Index?id=@item.Id">@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>

有人知道这个的解决方案吗?

【问题讨论】:

    标签: c# asp.net linq entity-framework lambda


    【解决方案1】:

    你可以这样做:

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

    【讨论】:

    • 不起作用它不知道第一次发布,然后我必须在该类上创建一个 FirstPost 属性才能使其工作?
    • 是的,这将返回一个新的匿名类,其中包含一个 Forum 属性和一个 Firstpost 属性。这将需要更改您使用返回数据的方式。
    • (我将其更改为 firstordefeault,因为并非所有论坛都已经发布了)我现在收到错误:传递到字典中的模型项的类型为 'System.Collections.Generic.List1[&lt;&gt;f__AnonymousType52 [Smartp1ck.Data.Forum,Smartp1ck.Data.Post]]',但此字典需要“System.Collections.Generic.IEnumerable`1[Smartp1ck.Data.Forum]”类型的模型项。
    • oke 我在其中添加了我的视图,我应该如何更改模型,因为@model IEnumerable 是错误的?
    【解决方案2】:

    我认为错误“...包含路径表达式必须引用导航属性...”抱怨 z.Posts.OrderBy 不是导航属性。

    请参考以下页面。

    Entity Framework, MVC 3, OrderBy in LINQ To Entities

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-14
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      相关资源
      最近更新 更多