我有一个使用实体框架的应用程序。我想添加一个树状视图,列出按产品类别分组的产品。我有一个旧的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
等等。
归根结底,我无法解决这个问题。最后,我动态地编写了一个SQL查询,并将其直接发送到数据库。它工作正常,并且我不依赖任何直接的用户输入,因此没有SQL注入的机会。但是,似乎太老了!在我程序的其余部分中,我将使用EF和LINQ。
感谢您的答复!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句