在LINQ计算列中的顺序

本文关键字:顺序 LINQ 计算 | 更新日期: 2023-09-27 18:17:45

我有一个数据库表的讨论论坛如下。如果行表示为答复,则ParentID跟踪父主题。

ID  Subject   Body   ParentID

在生成主题列表时,我希望根据每个主题的回复数对主题进行排序。是否有一种方法可以动态地添加计算列并为每个主题查询相同的表?

List<Topic> topics = (from element in Posts where ParentID is null).OrderBy(m => m.Replies).ToList();

问题是我没有在数据库中持久化的答复列,并希望在运行时计算它。我可以使用let关键字或类似的吗?

在LINQ计算列中的顺序

这段代码没有经过测试。

List<Topic> topics = Posts.Where(x => x.ParentID == null)
                          .GroupJoin(Posts.Where(x => x.ParentID != null),
                                   parent => parent.ID,
                                   reply => reply.ParentID,
                                   (parent, reply) => new { Posts = parent, Reply = reply.Count() })
                          .OrderBy (x => x.Reply)
                          .Select(x => x.Posts)
                          .ToList<Topic>();