我想知道是否有一种巧妙的方法可以做到这一点,即不使用任何类型的 while 循环或类似循环,最好是将 Linq to Entities 作为单个 SQL 往返运行,同时也针对 Linq To对象。
我有一个实体 - Forum
- 存在父子关系。也就是说,一个 Forum
可能(或者在顶层的情况下,可能没有)有一个 ParentForum
,并且可能有许多 ChildForums
。 论坛
然后包含许多帖子
。
我想要的是一种从 Forums
树中获取所有 Posts
的方法 - 即有问题的 Forum
,以及所有的 child 、孙子等。我事先不知道有问题的论坛
可能有多少个子级别。
(注意 - 我知道这个例子不一定是一个有值(value)的用例,但论坛对象模型是大多数人熟悉的一个,因此作为一个通用的和可访问的前提而不是我的实际领域模型。 )
最佳答案
一种可能的方法是,如果您的实际数据表是使用左/右树存储的(这里的示例:http://www.sitepoint.com/hierarchical-data-database-2/。请注意,该示例是在 MySQL/PHP 中,但实现起来很简单)。使用此功能,您可以找出所有属于 parent 的左/右值范围内的论坛,并且鉴于此,您可以检索论坛 ID 为 IN
这些论坛 ID 的所有帖子。
关于c# - LINQ - 在父子层次结构中全选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9664319/