ASP.NET MVC - 根据上一篇文章对论坛主题进行排序

标签 asp.net asp.net-mvc entity-framework linq linq-to-entities

我正在 ASP.NET MVC 中编写简单的论坛。

在类别 View 中,我想显示最新的线程。

我按线程添加日期排序的代码:

model.ForumThreads = db.ForumThreads
   .Where(t => t.ForumThreadCategoryId == id)
   .OrderByDescending(t => t.AddDate)
   .ToPagedList(page, 10);

ForumPost 模型具有 ForumThread 模型的外键。

问题是:
如何按最后一个帖子对主题进行排序,但如果没有帖子,则按主题添加日期排序。

最佳答案

使用三元if运算符(如果 ? 然后 : 否则):

model.ForumThreads = db.ForumThreads
   .Where(t => t.ForumThreadCategoryId == id)
   .OrderByDescending(t => t.ForumPosts.Any() //if
                         ? t.ForumPosts.Max(x=>x.AddDate) //then by post add date
                         : t.AddDate) //else like you already do
   .ToPagedList(page, 10);

关于ASP.NET MVC - 根据上一篇文章对论坛主题进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39036356/

相关文章:

c# - 在 Entity Framework 4.1 中查询一页数据并获取总计数的更好方法?

asp.net - 为什么 FireFox 3.6.8 不缓存来自 asp.net 开发者服务器的静态内容?

用于多种数字大小的 ASP.Net ValidationExpression

c# - 认证中的一些误区

c# - 使用 Get 将 ASP.Net MVC 中的 ViewModel 从一个 View 传递到另一个 View

c# - ASP.NET MVC4 Code First - 数据验证不起作用

c# - 提交修改viewstate所需的ajax asp表单

c# - 在源代码文件中使用来自 web.config 的连接字符串

c# - 如何重新生成 EDMX 文件?

c# - 如何在 EF4 中正确使用 InOut ObjectParameter?