父级和子级的 Linq 顺序

Høg*_*dal 4 c# linq parent sql-order-by

我有两个表:反馈和评论。一个反馈可以有很多评论。基本上是简单的父子关系。

我有一个页面列出所有反馈和相关评论,如下所示:

反馈A
评论A1
评论A2

反馈B
评论B1

反馈C(注:无评论)

每个反馈和评论都有一个创建日期。目前,我按反馈日期和评论日期排序,因此我总是在顶部看到最新的反馈,然后是之后的所有评论。

我想要实现的是:当将新评论添加到反馈中时,该反馈应显示在顶部,无论反馈有多旧,或者如果添加的反馈没有评论,则该反馈现在应该是第一项在列表中。假设在反馈 B 中添加了一条评论,然后添加了一个没有评论的新反馈,那么我的列表将如下所示:

反馈D(这是新的反馈)

反馈B
评论B1
评论 B2(这是新评论)

反馈A
评论A1
评论A2

反馈C(注:无评论)

现在,反馈 D 将位于列表顶部,因为它具有所有反馈和评论的最新日期,而反馈 B 将位于第二位,因为它具有评论 B2,而评论 B2 将具有第二最新日期。

到目前为止,这是我的代码:

_repositories.Feedback
.Include(f => f.Comments)
.OrderByDescending(f => f.PublishedDate);
Run Code Online (Sandbox Code Playgroud)

我想要修改的是

.OrderByDescending(f => f.PublishedDate)
以获得正确的顺序。这可能吗?

Bac*_*cks 5

为每个反馈选择最后评论日期并按它们排序:

_repositories.Feedback
.Include(f => f.Comments)
.OrderByDescending(f => 
    f.Comments
    .Select(c => (DateTime?)c.PublishedDate)
    .OrderByDescending(c => c)
    .FirstOrDefault() ?? f.PublishedDate
)
.ThenByDescending(f => f.PublishedDate);
Run Code Online (Sandbox Code Playgroud)