@SirRufo: Die Reihenfolge der Liste ist willkürlich.
Ich denke, ich bin auf dem richtigen Weg. Das hier liefert mir schon recht gute Ergebnisse:
Code:
private void GetWorkflowPath(GlobalTypesDatabase.WorkflowTreeNode node, List<int> UsedStations)
{
UsedStations.Add(node.CurrentStation);
foreach (var defSingleWf in _dbData.DefWorkflow)
{
if (defSingleWf.StationLogicalSrc == node.CurrentStation)
{
bool isJumpBack = UsedStations.IndexOf(defSingleWf.StationLogicalDest) != -1;
GlobalTypesDatabase.WorkflowTreeNode newNode = new GlobalTypesDatabase.WorkflowTreeNode();
newNode.CurrentStation = defSingleWf.StationLogicalDest;
if (isJumpBack)
{
node.JumpBackToStation.Add(defSingleWf.StationLogicalDest);
}
else
{
node.TargetStations.Add(newNode);
GetWorkflowPath(newNode, UsedStations);
}
}
}
}
Grüße und nochmals vielen Dank für die zahlreichen Antworten!
Matze