Neo4Jclient |自定义返回表达式

时间:2015-10-27 05:55:09

标签: neo4j neo4jclient

我正在使用neo4jclient进行C#。

我想返回类似的内容:

  

EXTRACT(RELS(p)| STARTNODE(ri)中的ri)作为StartNodes,EXTRACT(RELS(p)| ri中的ri)作为关系,EXTRACT(RELS(p)| ENDNODE(ri)中的ri)作为EndNodes

如何在neo4jclient上提取流畅的api?

P是一条路径。

1 个答案:

答案 0 :(得分:2)

在不知道您正在尝试解决的完整查询或特定问题/场景的情况下,很难建议完整的查询,但包含以下内容的链式返回方法可能有用吗?

var query = client.Cypher
    .Match("p = [your match statement]")
    .Return(p => new
    {
        StartNodes = Return.As<IEnumerable<Node<Person>>>("extract(ri in rels(p) | startnode(ri))"),
        Relations = Return.As<IEnumerable<RelationshipInstance<Person>>>("extract(ri in rels(p) | ri)"),
        EndNodes = Return.As<IEnumerable<Node<Person>>>("extract(ri in rels(p) | endnode(ri))")
    });

如果您不需要包装器对象,只需返回IEnumerable<Person>,e,g,

.Return(p => new
{
    StartNodes = Return.As<IEnumerable<Person>>("extract(ri in rels(p) | startnode(ri))"),
    Relations = Return.As<IEnumerable<Person>>("extract(ri in rels(p) | ri)"),
    EndNodes = Return.As<IEnumerable<Person>>("extract(ri in rels(p) | endnode(ri))")
    });

请注意,上面的代码假设您正在尝试将Neo4j的响应反序列化为Person类型的POCO对象。您应该将其替换为您正在使用的任何对象。