private static DependenciesLayer BuildLayer(IList <GraphNode> allNodes, int number) { var firstLayer = new DependenciesLayer { Number = number }; firstLayer.Nodes.AddRange( allNodes.Where(n => n.IncomingDependencies.Count == 0) .ToArray()); ClearUsedDependencies(allNodes, firstLayer); return(firstLayer); }
private static void ClearUsedDependencies(IList <GraphNode> allNodes, DependenciesLayer currentLayer) { foreach (var solution in currentLayer.Nodes) { foreach (var node in allNodes) { if (node.IncomingDependencies.Contains(solution)) { node.IncomingDependencies.Remove(solution); } } } }