neo4jclient 的 return 方法中的方法链接

Method chaining in neo4jclient's return method

我无法弄清楚以下密码查询的 neo4jclient 等价物是什么:

match (n)
return n.Property, n.AnotherProperty, n.head(label(n))

这是我目前拥有的:

.Match("n")
.Return((n) => new SomeNode
{
    Property = n.As<SomeNode>.Property,
    AnotherProperty = n.As<SomeNode>.AnotherProperty,
    Label = n.Labels() //This gives all labels, I only need the head. I can't chain it with ".head()"
}

我在 Whosebug 和 wiki 上四处寻找,但我找不到任何关于链接函数的信息。

有没有办法按照我在这里描述的方式实现链接,我是否需要构造另一个查询来单独获取标签,然后取该列表的头部并将其添加到 SomeNode,或者我错过了更好的、完全不同的方法吗?

我最初是在遇到以下错误时来到这里的: "If you want to run client-side logic to reshape your data in .NET, use a Select call after the query has been executed, like .Return(…).Results.Select(r => …)." 但是,wiki 上也没有这方面的示例。

我很快想到的最佳方法是使用 Return.As 来处理您想在 Return 中执行的任何此类操作,例如:

.Match("(n)")
.Return((n) => new SomeNode
{
    Property = n.As<SomeNode>.Property,
    AnotherProperty = n.As<SomeNode>.AnotherProperty,
    Label = Return.As<string>("head(labels(n))")
}

可以使用With:

.Match("(n)")
.With("n, head(labels(n)) AS firstLabel")
.Return((n, firstLabel) => new SomeNode
{
    Property = n.As<SomeNode>.Property,
    AnotherProperty = n.As<SomeNode>.AnotherProperty,
    Label = firstLabel.As<string>()
}

两者之间有很大差异——无论哪种方式,您都必须将 head 位写为 string :/