私は流暢な構文に翻訳するのに苦労している次の Cypher を持っています:
MATCH (u:User)-[:HAS_ROLE]->(r:Role)-[:ROLE_OF]->(a:App)
RETURN u AS User, COLLECT([r, a]) AS Roles
これは私がこれまでに持っているものですが、COLLECT([r, a]) を Roles として返す方法がわかりません。結果をビューに渡すことができるようにするために、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 は として返すことしかできませDictionary<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
これについての助け、またはそれを行うためのより良い方法の提案に非常に感謝しています。
どうもありがとう :)