【问题标题】:How to retrieve hierarchical data in inorder traversal?如何在中序遍历中检索分层数据?
【发布时间】:2019-11-13 16:36:07
【问题描述】:

我有一个表示树结构中节点的元素。

public class Element
{
    public int Id { get; set; }
    ...
    public Element Left { get; set; }
    public Element Right { get; set; }
}

我正在通过子元素的外键维护一个包含所有这些元素的表。 如果我尝试通过使用预先加载来取回这棵树,我会在后序遍历中得到这棵树:

public string GetExpression(int rootId)
{
    var root = _context.Set<Element>()
        .Include(r => r.Left)
        .Include(r => r.Right)
        .ToList();
}

有没有办法使用查询来获取中序遍历的元素?还是我必须自己递归执行此操作?

【问题讨论】:

    标签: c# asp.net asp.net-core tree entity-framework-core


    【解决方案1】:

    除非您有 ORDERBY 子句,否则不会定义查询中返回记录的顺序。因此,您提供的示例在后订单中返回它们只是运气。

    我建议您简单地定义中序和后序遍历方法,并在加载整个集合后调用它们。您可以省略两个 .Include 语句,因为 EF 将在加载期间修补导航关系。

    【讨论】:

      猜你喜欢
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多