所以我正在建立一个论坛,并试图在最后一个回复日期前对线程进行排序。因此,当有人访问主页并单击“回复”排序时,它将按最近的回复对线程进行排序。虽然我在切换顺序时遇到了这个问题。我尝试使用:
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;
}
我得到一个运行时错误,说“检测到一个循环”。
线程查询获取ReplyId为0的所有帖子,或者换句话说,每个帖子都被视为一个帖子。回复抓取所有不等于0的帖子,换句话说,所有回复帖子的帖子。
有人能告诉我一种通过最近的回复对线程进行排序的替代方法吗?回复和线程都使用相同的模型,因此它具有挑战性。
答案 0 :(得分:0)
在linq查询中使用了DISTINCT()函数,但此函数仅用于表
中的一个