【问题标题】:implementing a recursive linq实现递归 linq
【发布时间】:2012-03-06 23:04:38
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# linq entity-framework


    【解决方案1】:

    抱歉,您不能对数据库执行递归 Linq - 您可能必须编写一个迭代函数或创建一个存储过程来为您执行此操作。

    类似的问题:

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

    【讨论】:

      【解决方案2】:

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

      (当然这不是一个答案,但可能会长期引导您走上更好的道路)

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2019-04-07
          • 2014-04-15
          • 2019-05-19
          • 2023-04-10
          • 1970-01-01
          • 1970-01-01
          • 2016-11-12
          • 2014-03-23
          • 1970-01-01
          相关资源
          最近更新 更多