题
我有一些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正确。我一定会努力改变到后本身跟踪它的方案。
不隶属于 StackOverflow