如何使用两个不同的查询按筛选器排序?

时间:2014-01-26 00:23:57

标签: c# asp.net

所以我正在建立一个论坛,并试图在最后一个回复日期前对线程进行排序。因此,当有人访问主页并单击“回复”排序时,它将按最近的回复对线程进行排序。虽然我在切换顺序时遇到了这个问题。我尝试使用:

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的帖子,换句话说,所有回复帖子的帖子。

有人能告诉我一种通过最近的回复对线程进行排序的替代方法吗?回复和线程都使用相同的模型,因此它具有挑战性。

1 个答案:

答案 0 :(得分:0)

  

在linq查询中使用了DISTINCT()函数,但此函数仅用于表

中的一个