树向下查询可以控制查询到第几级就停止吗? 返回

SqlSugar 沟通中
11 351

var allchilds2= db.Queryable<Tree>().ToChildList(it => it.ParentId, 2);

我使用这查询所有下级数据,如果这个树结构很大的情况,我希望控制查询到第几级就终止。这样应该怎么实现呢?

热忱回答11

  • fate sta fate sta VIP0
    2024/3/27

    这种平级不行 ,如果是有层级的可以用导航查询

    0 回复
  • fate sta fate sta VIP0
    2024/3/27

    建议你存的时个加上层级 这样话可以用 where level>5 这样就是五层

    0 回复
  • 我搜索过关于树查询的问题,有一个相似的问题,你们建议是使用是导航查询

    db.Queryable<Order>() 

        .AsNavQueryable()//加这个前面

        .Includes(it=>it.Child,it=>it.Child,it=>it.Child,it=>it.Child,it=>it.Child)

        .ToPageList(1,10,ref count)

    但你们回复是导航最多支持7层,我的可能有十层。
    我这个是无限树,而且是相对的,不方便加上层级level
    如果是使用递归或迭代查询也太影响效率了。

    0 回复
  • fate sta fate sta VIP0
    2024/3/27

    @♀心℡菜♂:ToChild已经很快了吧 一万最多1秒吧

    0 回复
  • fate sta fate sta VIP0
    2024/3/27

    或者用ToTree这个应该最快的,几十万也吃的消的

    0 回复
  • 我不是说查询性能不行。我是说没办法通过ToChildList或导航查询满足我的需求。
    我就一张user表,每个人都有上级。当我查询其中一个人的userId的时候,当前userId为root节点,查找下面所有Child节点,但只能查询到第10层就结果。
    我如果这样使用导航查询行吗?

    db.Queryable<Order>() 

        .AsNavQueryable()//加这个前面

        .Includes(it=>it.Child,it=>it.Child,it=>it.Child,it=>it.Child,it=>it.Child,it=>it.Child,it=>it.Child,it=>it.Child,it=>it.Child,it=>it.Child)


    0 回复
  • 我如果是使用var allchilds2= db.Queryable<Tree>().ToChildList(it => it.ParentId, 2);
    或者
    db.Queryable<Tree>().ToTree(it => it.Child, it => it.ParentCode, 0,it=>it.Code)
    如果是直接使用这两个查询树节点,会一直查询到尾。我就是想控制层级。

    0 回复
  • fate sta fate sta VIP0
    2024/3/27

    @♀心℡菜♂: ToTree性能没有问题直接用就行了

    0 回复
  • fate sta fate sta VIP0
    2024/3/27

    十万很快的

    0 回复
  •  问题我怎么样控制层级,让他在规定的层级停止往下查了。

    0 回复
  • 有谁遇到这个需求的,给个建议呗

    0 回复