我想知道是否有一种巧妙的方法可以做到这一点,那就是不要使用任何一种while循环或类似的循环,最好是将它作为单一SQL往返对Linq to Entities和Linq To Objects进行运行。

我有一个实体-Forum-该实体具有父子关系。也就是说,Forum可能(或在顶级的情况下可能没有)具有ParentForum,并且可能具有许多ChildForums。一个Forum然后包含许多Posts

我在这里想要的是一种从Posts树中获取所有Forums的方法-即有问题的Forum以及所有子代,孙代等。我事先不知道有多少子代-所涉及的Forum级别。

(注意-我知道这个示例不一定是有价值的用例,但是Forum对象模型是大多数人所熟悉的,因此它是通用且可访问的前提,而不是我的实际域模型。)

最佳答案

一种可能的方式是,如果您的实际数据表是使用左/右树存储的(示例在这里:http://www.sitepoint.com/hierarchical-data-database-2/。请注意,该示例在MySQL / PHP中,但是实现起来很简单)。使用此功能,您可以找出属于父母的左/右值范围内的所有论坛,并且可以获取所有论坛ID为IN这些论坛ID的帖子。

10-08 04:08