树向下查询可以控制查询到第几级就停止吗? 返回
var
allchilds2= db.Queryable<Tree>().ToChildList(it => it.ParentId, 2);
我使用这查询所有下级数据,如果这个树结构很大的情况,我希望控制查询到第几级就终止。这样应该怎么实现呢?
热忱回答(11)
-
fate sta VIP02024/3/27
这种平级不行 ,如果是有层级的可以用导航查询
0 回复 -
fate sta VIP02024/3/27
建议你存的时个加上层级 这样话可以用 where level>5 这样就是五层
0 回复 -
♀心℡菜♂ VIP02024/3/27
我搜索过关于树查询的问题,有一个相似的问题,你们建议是使用是导航查询
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 VIP02024/3/27
@♀心℡菜♂:ToChild已经很快了吧 一万最多1秒吧
0 回复 -
fate sta VIP02024/3/27
或者用ToTree这个应该最快的,几十万也吃的消的
0 回复 -
♀心℡菜♂ VIP02024/3/27
我不是说查询性能不行。我是说没办法通过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 回复 -
♀心℡菜♂ VIP02024/3/27
我如果是使用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 VIP02024/3/27
@♀心℡菜♂: ToTree性能没有问题直接用就行了
0 回复 -
fate sta VIP02024/3/27
十万很快的
0 回复 -
♀心℡菜♂ VIP02024/3/27
问题我怎么样控制层级,让他在规定的层级停止往下查了。
0 回复 -
♀心℡菜♂ VIP02024/3/29
有谁遇到这个需求的,给个建议呗
0 回复