我有一个实体,它反过来引用同一个表,它是它的父。下面的表格更好地描述了它。
| ID | Source_ID |
+----+----------+
| 1 | null |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 4 |
现在,当我在ID = 5时,我需要获取其最终父级,即ID = 1.
我尝试编写如下函数:
<entity> ultimateparententity;
internal <entity> FetchParentComponentRecursive(<entity> entity)
{
if (component.ParentEntity!= null)
{
FetchParentComponentRecursive(entity.ParentEntity);
}
else
{
ultimateparententity = entity;
return component;
}
return entity;
}
我正在使用在类级别声明的变量来了解最终的父级。我正在返回变量“实体”,后来从未使用过,但是终极实用性就是使用的。这种方法有效,但我对此并不满意。任何指示都会有所帮助。
答案 0 :(得分:1)
我对C#不太熟悉,但递归函数的一般结构看起来很糟糕。
尝试以下方面的内容:
internal <entity> FetchParentComponentRecursive(<entity> entity)
{
if (component.ParentEntity == null)
{
return component;
}
else
{
return FetchParentComponentRecursive(entity.ParentEntity);
}
}
顺便说一句,这在很大程度上取决于数据集中没有循环引用。