实现了递归linq

本文关键字:linq 递归 实现 | 更新日期: 2023-09-27 18:26:53

因此,假设我有一个与自身有关系的表,例如

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

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

实现了递归linq

很抱歉,您不能对数据库执行递归Linq操作——您可能需要编写一个迭代函数或创建一个存储过程来完成此操作。

类似问题:

实体框架如何使用递归层次结构?Include()似乎不适用于

您是否考虑过在数据库表中映射层次关系的嵌套集模型而不是父指针?

(当然这不是一个答案,但从长远来看,这可能会引导你走上更好的道路)

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