0

我有一个实体,它又引用了同一个表,它是它的父表。下面的表格可以更好地描述它。

| 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;
}

我正在使用在类级别声明的变量来了解最终父级。我正在返回变量“实体”,它以后不会使用,但最终父实体是使用的。这种方法有效,但我对此不太满意。任何方向都会有所帮助。

4

1 回答 1

1

我对 C# 不太熟悉,但递归函数的一般结构看起来不太好。

尝试以下方式:

internal <entity> FetchParentComponentRecursive(<entity> entity)
{
  if (component.ParentEntity == null)
  {
     return component;
  }
  else
  {
     return FetchParentComponentRecursive(entity.ParentEntity);
  }
}

顺便说一句,这在很大程度上取决于您的数据集中没有循环引用。

于 2013-09-17T16:47:38.127 回答