实现递归linq

时间:2012-03-06 23:04:38

标签: c# linq entity-framework

所以,让我说我有一张与自身有关系的表,例如

Table Page
-------------
IDPage 
description    
IDPage_FK <-- foreign key 

现在这个表由实体框架映射,如此

Class Page
-----------
int IDPage
string description
int IDPage_FK
Page Page1
IColletion<Page> Page2

如果可能的话我想归档的是,它创建了一个linq表达式来导航所有表,并在字符串变量中输出这样的输出:

假设表中有这个值

IDPage    Description    IDPage_FK

1         Example        null

2         Example2         1

3         Example3         2

字符串变量

的输出
string inheritance = (from P in Page Select....)

输出将是这样的

Example > Example2 > Example3

有可能吗?或者我是否必须创建一个循环到每个元素的方法来创建变量?

3 个答案:

答案 0 :(得分:1)

抱歉,你无法将Linq输出到数据库 - 你可能要么编写迭代函数,要么创建一个存储过程来为你完成。

类似的问题:

How does Entity Framework work with recursive hierarchies? Include() seems not to work with it

答案 1 :(得分:1)

您是否考虑过nested set model而不是父指针来映射数据库表中的层次结构关系?

(当然这不是一个答案,但可以指导你长期更好的道路)

答案 2 :(得分:0)

如果在模型中添加根节点属性,则可以查询两个级别:根节点,所有子节点都按根节点标识。然后,您可以针对内存中的实例进行递归以生成字符串。