我有一个使用Entity Framework的应用程序。我想添加一个树形视图,按类别分组列出产品。我有一个旧的SQL查询,可以获取所有产品和类别,并将它们排列成父节点和子节点。我正在尝试将其翻译为使用EF的LINQ。但是SQL具有WITH子查询,我不熟悉如何使用。我已经尝试使用Linqer和LinqPad来解决问题,但它们在WITH子句上出现问题,我不确定如何解决。在LINQ中是否可能实现这种情况?
以下是查询:
当我运行查询时,我得到的数据看起来像这样(这里被截断了几千行):
以下是查询:
declare @id int
set @id=0
WITH ChildIDs(id,parentid,type,ChildLevel) AS
(
SELECT id,parentid,type,0 AS ChildLevel
FROM dbo.brooks_product
WHERE id = @id
UNION ALL
SELECT e.id,e.parentid,e.type,ChildLevel + 1
FROM dbo.brooks_product AS e
INNER JOIN ChildIDs AS d
ON e.parentid = d.id
WHERE showitem='yes' AND tribflag=1
)
SELECT ID,parentid,type,ChildLevel
FROM ChildIDs
WHERE type in('product','productchild','productgroup','menu')
ORDER BY ChildLevel, type
OPTION (MAXRECURSION 10);
当我运行查询时,我得到的数据看起来像这样(这里被截断了几千行):
ID.....parentid.....type.....ChildLevel
35429..0............menu.....1
49205..0............menu.....1
49206..49205........menu.....2
169999.49206........product..3
160531.169999.......productchild..4
等等。