【发布时间】:2014-01-26 16:07:18
【问题描述】:
所以我正在建立一个论坛并尝试按最后回复日期对主题进行排序。因此,当有人访问主页并单击按“回复”排序时,它将按最近的回复对线程进行排序。不过,我在使用切换命令时遇到了麻烦。我尝试使用:
var threads = from s in db.Forum
where s.ReplyId==0
select s;
var Replies = (from s in db.Forum
where s.ReplyId != 0
select s).OrderByDescending(i => i.DateCreated);
switch (sortOrder)
{
default:
threads = threads.OrderByDescending(s => Replies.Where(i => i.ReplyId == threads.Where(t=> t.Id==i.ReplyId).FirstOrDefault().Id).FirstOrDefault().DateCreated);
break;
}
我收到一个运行时错误,提示“检测到循环”。
线程查询会抓取所有回复 ID 为 0 的帖子,或者换句话说,每个帖子都被视为一个线程。 Replies 会抓取所有不等于 0 的帖子,即所有回复线程的帖子。
谁能告诉我另一种按最近回复对主题进行排序的方法?回复和线程都使用相同的模型,因此具有挑战性。
【问题讨论】:
-
您的问题令人困惑。我已经阅读了 3 次,无法区分“按最后回复日期对线程进行排序”与“按最近回复对线程进行排序”之间的区别。也许如果你把任务换成不同的方式,你自己就会得到答案。
-
所以我想根据他们的回复显示最近的线程。因此,如果回复了 thread1,我希望 thread1 位于列表顶部,因为它是最近活动的线程。是这样吗?
-
你能从数据库中获取最近的回复列表,将它们加入线程并显示这些线程吗?
-
好吧,我现在更困惑了。
thread和reply有什么区别?您可以发布您的模型及其关系吗? -
他们使用相同的模型。除了回复没有标题外,它们被认为是相同的东西。线程是实际线程的第一个帖子,回复是对该线程的回复。