Как можно подсчитать подзадачи задачи и подсчитать, сколько из них выполнено? Любая подзадача может иметь много подзадач, и мы должны считать подзадачи задачи только на самом низком уровне (больше не имеет подзадач). (Задача готова, когда все ее подзадачи выполнены. Но это только объяснение, все задачи знают, готовы они или нет)
Task1 (not done)
SubTask1a (not done)
SubTask1a_1 (done) <-- lowest level
SubTask1a_2 (not done) <-- lowest level
SubTask1b (not done) <-- lowest level
Так что в этом примере у Task1 есть 3 подзадачи, и только одна выполнена .
Мне удалось выполнить итерации необходимых элементов, но я не могу подсчитать сумму подзадач и их количество.
var tasks = new List<Task>()
{
new Goal(){ Id=1, Name="Task1" ,ParentId=0, Done=false},
new Goal(){ Id=2, Name="SubTask1a" ,ParentId=1, Done=false},
new Goal(){ Id=3, Name="SubTask1a_1" ,ParentId=2, Done=true},
new Goal(){ Id=4, Name="SubTask1a_2" ,ParentId=2, Done=false},
new Goal(){ Id=5, Name="SubTask1b" ,ParentId=1, Done=false},
};
Walk(1);
void Walk(int Id)
{
var children = goals.Where(c => c.ParentId.Equals(Id)).ToList();
foreach (var item in children)
{
Walk(item.Id);
}
}