我想知道是否有一种巧妙的方法可以做到这一点,那就是不要使用任何一种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的帖子。