我有以下 Cypher,我正在努力将其翻译成流利的语法:
MATCH (u:User)-[:HAS_ROLE]->(r:Role)-[:ROLE_OF]->(a:App)
RETURN u AS User, COLLECT([r, a]) AS Roles
这是我到目前为止所拥有的,但我不知道如何将 COLLECT([r, a]) 作为角色返回。我正在使用 UserDetails 类来将结果传递给视图。
var results = _graphClient.Cypher
.Match("(user:User)-[:HAS_ROLE]->(role:Role)-[:ROLE_OF]->(app:App)")
.Return((user,role,app) => new UserDetails {
User = user.As<User>(),
Roles = ???
})
.OrderBy("user.Username")
.Results;
我首先尝试了一个字典,但 Neo4jClient 只允许返回 aDictionary<string, T>
而我想要一个Dictionary<Role,App>
.
Roles = Return.As<Dictionary<Role,App>>("COLLECT([role, app])") // doesn't work
我也考虑过创建以下类来使用,但我找不到让它工作的方法。
public class RoleWithApp
{
public Role Role { get; set; }
public App App { get; set; }
}
Roles = Return.As<List<RoleWithApp>>("COLLECT([role, app])") // doesn't work
我将非常感谢您对此提供一些帮助,或提出更好的方法建议。
非常感谢 :)