2017-07-03 9 views
0

Comment puis-je obtenir les étiquettes d'un nœud avec bibliothèque Neo4jClientneo4jclient obtenir des étiquettes de nœud

c'est le code i couru et il a renvoyé l'erreur suivante

L'expression de retour que vous avez fourni utilise des méthodes autres que ceux définis par ICypherResultItem, Neo4jClient.Cypher.All ou Neo4jClient.Cypher.Return. L'expression de retour doit être quelque chose que nous pouvons traduire en Cypher, puis envoyer au serveur pour être exécuté. Vous ne pouvez pas utiliser de chaînes de méthodes, de LINQ-to-objects ou d'autres constructions comme celles-ci. Si vous souhaitez exécuter une logique côté client pour remodeler vos données dans .NET, utilisez un appel Select après l'exécution de la requête , comme .Return (...) .Results.Select (r => ...). Cette technique maintient une séparation claire entre ce qui est exécuté côté serveur (dans Neo4j, via Cypher) et le côté client (retour dans .NET).

mon code

public List<string> getLabels(MyEvent targetEvent) 
{ 
    List<string> result = 
         this.client.Cypher.Match("(newE:MyEvent)") 
          .Where((MyEvent newE) => newE.myid == targetEvent.myid) 
          .Return(newE=> newE.Labels().ToString()) 
          .Results.ToList(); 
        return result; 
} 

Répondre

1

La docs section "Get all labels for a specific user" Afficher ce code:

graphClient.Cypher 
    .Match("(user:User)") 
    .Where((User user) => user.Id == 1234) 
    .Return(user => user.Labels()) 
    .Results 

Basé dans le message d'erreur dans la question, je crois que vous avez seulement besoin d'enlever le toString() à partir du retour, comme ceci:

public List<string> getLabels(MyEvent targetEvent) 
{ 
    List<string> result = this.client.Cypher.Match("(newE:MyEvent)") 
     .Where((MyEvent newE) => newE.myid == targetEvent.myid) 
     .Return(newE=> newE.Labels()) 
     .Results.ToList(); 
     return result; 
}