C# LINQ中计算列中的OrderBy?

C# LINQ中计算列中的OrderBy?,c#,sql,linq,C#,Sql,Linq,我有一个用于讨论论坛的数据库表,如下所示。如果行表示为答复,则ParentID跟踪父主题 ID Subject Body ParentID 在生成主题列表时,我想根据每个主题的回复数量对主题进行排序。是否有一种方法可以动态添加计算列并为每个主题查询相同的表 List<Topic> topics = (from element in Posts where ParentID is null).OrderBy(m => m.Replies).ToList(); 问题是

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

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

List<Topic> topics = (from element in Posts where ParentID is null).OrderBy(m => m.Replies).ToList();
问题是,我没有在数据库中持久保存回复列,并且希望在运行时计算它。我可以使用let关键字或类似的关键字吗?

但是,此代码未经测试。它将只计算其直系后代


这些类是局部的,因此您可以使用这个概念。只需在那里添加计算字段。但是要小心过滤计算字段。回复本身可以有回复吗?或者ParentID只会引用本身没有ParentID值的记录吗?LINQ什么?只是LINQ不是一种数据访问技术。LINQ到SQL?LINQ到实体,即实体框架的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>();