我需要一个以一个名为“User”的表开头的数据库,该表需要自我引用,并且会有一个非常深的相关对象图。它需要像下面图像的左侧(忽略右侧)。
我还需要向上和向下遍历此图表以计算百分比,总数等。换句话说,在某些情况下我需要遍历整个图表。
这可能和/或它是如何完成的?可以在LINQ语句中直接进行遍历吗?实例
修改 我基本上是在尝试创建网络营销方案,需要计算每个人的收入。
示例:
希望这有助于:S
答案 0 :(得分:3)
您不能仅使用LINQ遍历整个树,这种方式可以转换为单个SQL查询(或者它们的常量计数)。您可以使用每个级别的一个查询或一个查询来执行此操作,该查询仅限于特定的级别计数(但是这样的查询会在很多级别上变得非常大)。
在T-SQL中(我假设您使用的是MS SQL Server),您可以使用recursive common table expressions执行此操作。应该可以将它放入一个存储过程,您可以从LINQ使用它来获取您真正想要的信息。
总而言之,您的选择是:
答案 1 :(得分:0)
我知道这已经很晚了,但如果你看一下Directed Graph算法,你可以绕过递归问题。看看这两篇文章:
http://www.sitepoint.com/hierarchical-data-database/
http://www.codeproject.com/Articles/22824/A-Model-to-Represent-Directed-Acyclic-Graphs-DAG-o