我有一些LINQ的代码,工作正常。它通过检索最近下令董事会的职位名单。

下面美中不足的是由订单的...它的订单在最近的评论。所以,如果一个板后刚刚得到了评论,那么这将是该名单的顶部(即最近的)。

KEWL ......但对新董事会的职位是什么刚刚创造出来的?它们列向下探底,因为他们没有意见:(这就像我想说“的为了通过最近的评论..但如果u有没有意见,那么它通过您的主板后创建日期)

这是我的LINQ ...

boardPostList = (from bp in db.tblBoardPosts.Where(whereClause)
    orderby (from bc in bp.tblBoardComments
    orderby bc.DateModified descending
    select bc.DateModified).First() descending
    select bp).ToPagedList(pageNumber, numberOfResults);

有没有人有什么建议吗?

有帮助吗?

解决方案

时,只要有一个评论发布到它,你不能更新tblBoardPosts场的原因吗?保持“张贴或最后的评论”日期,那么你已经有了一个的的简单查询,其中一个并不需要扫描系统中的每个意见制定出做什么。

话虽如此,这个查询的可能的工作,如果你的DateModified场可为空:

boardPostList = (from bp in db.tblBoardPosts.Where(whereClause)
    orderby ((from bc in bp.tblBoardComments
    orderby bc.DateModified descending
    select bc.DateModified).FirstOrDefault() ?? bp.DateModified) descending
    select bp).ToPagedList(pageNumber, numberOfResults);

如果它只是一个直DateTime列,FirstOrDefault的结果仍然是这将是非空的一个DateTime ...你可以尝试:

boardPostList = (from bp in db.tblBoardPosts.Where(whereClause)
    let lastComment = bp.tblBoardComments
                        .OrderByDescending(bc => bc.DateModified)
                        .FirstOrDefault()
    let lastModified = (lastComment == null 
                        ? bp.DateModified 
                        : lastComment.DateModified) 
    orderby lastModified descending
    select bp).ToPagedList(pageNumber, numberOfResults);

这是非常可怕的,虽然,可能无法转化为SQL正确。我一定会努力改变到后本身跟踪它的方案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top