Пытался решить эту проблему без прогресса в течение пары дней, мой вопрос:
Если задана сущность в иерархии, вернуть список ближайших потомков (или родителя s *).1005 *) сущности.
Когда я хочу узнать иерархию «сущности 1.2.2.2», она возвращает список, содержащий только полужирные элементы:
<b>Entity 1</b>
- Entity 1.1
- <b>Entity 1.2</b>
- Entity 1.2.1
- <b>Entity 1.2.2</b>
- Entity 1.2.2.1
- <b>Entity 1.2.2.2</b>
- Entity 1.2.3
- Entity 1.2.4
- Entity 1.2.4.1
- Entity 1.3
- Entity 1.4
Entity 2
...
Следовательно, ожидаемый результат:
<b>Entity 1</b>
- <b>Entity 1.2</b>
- <b>Entity 1.2.2</b>
- <b>Entity 1.2.2.2</b>
Код реализации:
class Entity
{
public Entity Parent { get; set; }
public bool AbsoluteParent
{
get
{
return Parent == null;
}
}
public IEnumerable<Entity> Hierarchy //problem
{
get
{
return AbsoluteParent
? new [] { this }
: new [] { this }.Concat( Parent.Hierarchy );
}
}
}
Вышеприведенная попытка массива является лишь одной из опций, которые я пробовал, этот код на самом деле возвращает что-то вроде:
<b>Entity 1</b>
<b>Entity 1</b>
- <b>Entity 1.2</b>
<b>Entity 1</b>
- <b>Entity 1.2</b>
- <b>Entity 1.2.2</b>
<b>Entity 1</b>
- <b>Entity 1.2</b>
- <b>Entity 1.2.2</b>
- <b>Entity 1.2.2.2</b>
Я могу достичь ожидаемых результатов с помощью функции parents()
в jQuery, я читал ключевые слова yield return
, но все еще придерживался более функционального стиля (я полагаю), который я все еще в детстве-входя в.