在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关键字或类似的吗?
这段代码没有经过测试。
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>();