我在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/

10-11 06:56