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
:/
我无法弄清楚以下密码查询的 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
:/