2017-10-19 16 views
0

J'ai cette méthode pour trouver tous les chemins d'un nœud de départ, et renvoyer les chemins avec la somme de la valeur Score dans chaque nœud, pour chaque chemin.Neo4j Additionner les valeurs des nœuds dans le chemin

public List<PathScore> GetHighScorePath(string nodeName) 
    { 
     try 
     { 
      List<PathScore> result = 
       this.client.Cypher.Match("p=(n)-[*]->(leaf)") 
       .Where((LogEvent n) => n.Name == nodeName) 
       .AndWhere("Not ((leaf)-->(n))") 
       .ReturnDistinct(p => new PathScore 
       { 
        Nodes = Return.As<IEnumerable<Node<LogEvent>>>("nodes(p)"), 
        Relationships = Return.As<IEnumerable<RelationshipInstance<Pivot>>>("rels(p)"), 
        pScore = Return.As<int>("REDUCE(total = 0, n IN nodes(p) | total + n.Score)") 
       }) 
       .Results.ToList(); 
      return result; 

     }} 

ceci est mon résultat chemin classe

public class PathScore 
{ 
    public IEnumerable<Node<LogEvent>> Nodes { get; set; } 
    public IEnumerable<RelationshipInstance<Pivot>> Relationships { get; set; } 
    public int pScore; 
} 

Mais je reçois ce msg d'erreur Neo4j

Neo4j returned a valid response, however Neo4jClient was unable to deserialize into the object structure you supplied.

je crois que l'erreur réside dans la partie où je retourne le score dans le cadre de l'objet retourné. Ceci est la ligne qui est à l'origine de l'erreur:

pScore = Return.As<int>("REDUCE(total = 0, n IN nodes(p) | total + n.Score)") 
+0

ok moi stupide. J'ai omis la méthode d'accès get set pour ma propriété pScore – Koh

+0

Cela signifie-t-il que * fonctionne * maintenant? –

+0

oui c'est. C'est en fait une erreur stupide de ma part. affichera une réponse pour cela pour fermer cela – Koh

Répondre

0

ok donc son juste une erreur où je l'ai laissé les accesseurs get/set.

c'est la version éditée

public class PathScore 
{ 
    public IEnumerable<Node<LogEvent>> Nodes { get; set; } 
    public IEnumerable<RelationshipInstance<Pivot>> Relationships { get; set; } 
    public int pScore { get; set; } 
}