asp.net c#+ EFを使用してparentChildオブジェクトでいくつかの入力が必要です。sql dbからのC#で親子ツリーを構築する
目的:
public class Organo
{
[Key]
public int id { get; set; }
public int key { get; set; }
public int parent { get; set; }
public string name { get; set; }
public string text { get; set; }
[NotMapped]
public List<Organo> OrganoChildrens { get; set; }
}
データ例:
id | key | parent | name | text
----+-------+----------+--------+----------
1 1 0 A A
2 2 1 B B
3 3 1 C C
4 4 2 B1 B1
5 5 4 B1_1 B1_1
6 6 1 D D
マイコントローラASP.NET図
マイクラス(DBテーブル)への親と子供で構成オブジェクトを返します。
public async Task<ActionResult> index()
{
//get all data
var organos = await db.Organos.ToListAsync();
Organo organo_ = new Organo();
foreach (var item in organos)
{
//head of diagram
if(item.parent == 0)
{
organo_.id = item.id;
organo_.key = item.key;
organo_.parent = 0;
organo_.name = item.name;
organo_.text = item.text;
}
else
{
//child
Organo organoChild_ = new Organo();
organoChild_.id = item.id;
organoChild_.key = item.key;
organoChild_.parent = item.parent;
organoChild_.name = item.name;
organoChild_.text = item.text;
organo_.OrganoChildrens.Add(organoChild_);
}
}
return View(fishbone_);
}
しかし、これで私は...私は親の階層を構築する方法を子どもたちの最初のレベルを取得する -
再帰を使用して、親であるときに親の子をループします。 – reggaeguitar
2番目のelse?いくつかのイデアを教えてください。 – user2633804
ダイアグラムの頭部は1つだけですか? – reggaeguitar