Beispiel #1
0
        private static List <IReadOnlyRelation> GetRelations(IReadOnlyNode node, IReadOnlyNode nodeToFind, string relation, bool isFrom)
        {
            if (node.From(relation).Any(currentNode => currentNode == nodeToFind))
            {
                return(new List <IReadOnlyRelation> {
                    node.FromRelations.First(x => x.To == nodeToFind)
                });
            }

            foreach (var currentNode in isFrom ? node.FromIsA() : node.ToIsA())
            {
                var relations = GetRelations(currentNode, nodeToFind, relation, isFrom);
                if (relations.Count <= 0)
                {
                    continue;
                }
                var toNode   = node.ToRelations.FirstOrDefault(x => x.From == currentNode);
                var fromNode = node.FromRelations.FirstOrDefault(x => x.To == currentNode);
                relations.Add(isFrom ? fromNode : toNode);
                return(relations);
            }

            return(new List <IReadOnlyRelation>());
        }