我在Sql Server中有此查询,我需要在EntityFramework中使用它,因此如何编写EntityFramwork代码,其结果与此相同
WITH cte AS
(
SELECT *
FROM StockGroups
WHERE GroupParent ='Stationery'
UNION ALL
SELECT g.*
FROM StockGroups g
JOIN cte
ON g.GroupParent = cte.GroupName
)
SELECT *
FROM cte
我不知道如何在EF中进行转换,因此我尝试使用join。
from a in db.StockGroups
join b in db.StockGroups on new { GroupParent = a.GroupParent } equals new { GroupParent = b.GroupName }
where
b.GroupName == "Stationery"
select new {
a.GroupName,
a.GroupParent,
Column1 = b.GroupName,
Column2 = b.GroupParent
}
但是结果不一样,就像CTE一样递归。
最佳答案
EF不支持递归CTE。使用 View 或表值函数。
关于c# - EntityFramework中的公用表表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13535003/