Neo4J 客户端 |自定义 return 表达式

Neo4Jclient | Custom return expression

我正在为 C# 使用 neo4jclient。

我想要 return 类似的东西:

EXTRACT(ri in RELS(p)| STARTNODE(ri)) as StartNodes,EXTRACT(ri in RELS(p)| ri) as Relations,EXTRACT(ri in RELS(p)| ENDNODE(ri)) as EndNodes

我如何在 neo4jclient 上流畅地提取 api?

P是路径。

不知道您的完整查询或您要解决的特定 problem/scenario,很难建议完整的查询,但是包含如下内容的链式 return 方法可能有效?

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))")
    });

如果您不需要包装器对象,您可以简单地 return IEnumerable<Person>,例如,

.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 对象。您应该将其替换为您正在使用的任何对象。