我有一个讨论论坛的数据库表如下。如果行表示为回复,则ParentID跟踪父主题。
ID Subject Body ParentID
在生成主题列表时,我想根据每个主题的回复数量来排序主题。有没有办法动态添加计算列并查询每个主题的同一个表?
List<Topic> topics = (from element in Posts where ParentID is null).OrderBy(m => m.Replies).ToList();
问题是我没有在数据库中保留一个回复列,并希望在运行时计算它。我可以使用let关键字或类似的吗?
答案 0 :(得分:0)
但是,此代码未经测试。它只计算其直系后代。
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>();