C# 使用“WITH”对C进行Neo4j密码查询

C# 使用“WITH”对C进行Neo4j密码查询,c#,neo4j,cypher,neo4jclient,C#,Neo4j,Cypher,Neo4jclient,我想让客户有两个帐户,一个是Type1,另一个是Type2。Cygher查询如下 这是有效的,任何增强都是受欢迎的,但这不是我的问题 如何将其转换为C?特别是“客户、账户、类型”部分。我的客户是Neo4j 我设法做到了 它可以工作,但结果不正确我无法帮助您使用c neo4jclient API,但您的语句可能更高效,如下所示: MATCH (client:Client)-[:OWNED_BY]-(account:Account)-[:TYPE_IN]-(type:Type) WHERE typ

我想让客户有两个帐户,一个是Type1,另一个是Type2。Cygher查询如下

这是有效的,任何增强都是受欢迎的,但这不是我的问题

如何将其转换为C?特别是“客户、账户、类型”部分。我的客户是Neo4j

我设法做到了


它可以工作,但结果不正确

我无法帮助您使用c neo4jclient API,但您的语句可能更高效,如下所示:

MATCH (client:Client)-[:OWNED_BY]-(account:Account)-[:TYPE_IN]-(type:Type) 
WHERE type.accountType IN ['Type1','Type2']
With client, collect([account, type]) as accounts
WHERE size(accounts) > 1
RETURN client, accounts

嗯,你的问题是不同的。您的Cypher查询有MATCH子句,而Neo4jClient查询有可选的MATCH子句,并且您的节点account、account1、account2等有不同的名称。。。帐户,帐户0


我建议您确保两个查询相同。您可以使用调试器,也可以使用query.query.QueryText或query.query.DebugQueryText打印生成的密码查询。在本例中,查询是在调用之前得到的。结果,但变量名有点不正确

就WITH而言,WITH方法也可以将字符串作为参数,因此您可以简单地编写:

.With("client, account, type")

在我看来,采用lambda的方法与采用字符串的方法相比几乎没有什么好处,只是噪音更大。

谢谢,伙计,您的查询效率更高,但有一个问题是,它可能会返回客户有两个帐户,这两个帐户都是type1/type2。我需要客户端有两个不同类型的帐户。query.query.QueryText或query.query.DebugQueryText确实有帮助,我将第二个选项match替换为match,现在可以使用了。凉的
MATCH (client:Client)-[:OWNED_BY]-(account:Account)-[:TYPE_IN]-(type:Type) 
WHERE type.accountType IN ['Type1','Type2']
With client, collect([account, type]) as accounts
WHERE size(accounts) > 1
RETURN client, accounts
.With("client, account, type")