私はこの問題に数日間立ち往生しており、いくつかのアイデアをいただければ幸いです。オブジェクトのコレクションがあります
public class Hierarchy
{
public Hierarchy(string iD, string name, int level, string parentID, string topParent)
{
ID = iD;
Name = name;
Level = level;
ParentID = parentID;
Children = new HashSet<Hierarchy>();
}
public string ID { get; set; }
public string Name{ get; set; }
public int Level { get; set; }
public string ParentID { get; set; }
public ICollection<Hierarchy> Children { get; set; }
}
Linqクエリからエンティティへのデータは次のとおりです。
ID Name Level ParentID
295152 name1 1 null
12345 child1 2 295152
54321 child2 2 295152
44444 child1a 3 12345
33333 child1b 3 12345
22222 child2a 3 54321
22221 child2b 3 54321
22002 child2c 3 54321
20001 child2a2 4 22222
20101 child2b2 4 22222
このデータは、未知のレベルの深さまで拡張される可能性があります(私は4つだけを示しています)。最終的には、複数の子オブジェクトのコレクションを持つ1つの階層オブジェクトがあり、複数の子オブジェクトのコレクションを持つ可能性があります...など...常にトップレベルのオブジェクトは1つだけです。
このプロジェクトでは、可能な限りLinqを使用しようとしています。
これには明らかにある種の再帰的な方法が必要ですが、私は立ち往生しています。任意のアイデアや助けをいただければ幸いです。
TIA