0
Я уже нашел T-SQL запрос (и он работает) для возвращения всего поддерева от указанного узла:Получить поддерево из гнездового набора дерева модели с Linq
SELECT node.id
FROM cuenta AS node,
cuenta AS parent,
cuenta AS sub_parent,
(
SELECT node.id, (COUNT(parent.id) - 1) AS depth
FROM cuenta AS node,
cuenta AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.id = 16
GROUP BY node.id
)AS sub_tree
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
AND sub_parent.id = sub_tree.id
GROUP BY node.id
Как я могу закодировать это в Запрос C# linq?
Я уже пытался с этим, но он не работает:
var nodeList = (from node in db.GetAll<Cuenta>()
from parent in db.GetAll<Cuenta>()
from sub_parent in db.GetAll<Cuenta>()
from sub_tree in (
from node2 in db.GetAll<Cuenta>()
from parent2 in db.GetAll<Cuenta>()
where node2.Lft >= parent2.Lft && node2.Lft <= parent2.Rgt && node2.Id == nodeId
group node2 by node2.Id into g
//orderby node2.Lft
select new { Id = g.Key, Depth = g.Count() - 1 })
where
node.Lft >= parent.Lft && node.Lft <= parent.Rgt &&
node.Lft >= sub_parent.Lft && node.Lft <= sub_parent.Rgt &&
sub_parent.Id == sub_tree.Id
group node by node.Id into g2
//orderby node.Lft
//select new { Id = g.Key, Depth = g2.Count() - sub_tree.Depth + 1 });
select new { Id = g2.Key }).ToList();
Спасибо!