public GraphRoute Find(int startId, int destId) { IEnumerable <int> trail = new DijkstrasGraph <int>(EdgeContaniner.ToWeightGraph()) .shortest_path(startId, destId); if (trail == null) { throw new ArgumentOutOfRangeException($"No route found between {startId} and {destId}"); } return(ToGraphRoute(trail.Concat(new[] { startId }))); }
private IEnumerable <TableRelation> ToEdges(IEnumerable <int> trail) => trail .Select(x => NodeContainer[x]) .PairWise((a, b) => EdgeContaniner.GetEdge(a.TableOrUdfName, b.TableOrUdfName));