从Neo4jclient动态返回

从Neo4jclient动态返回,neo4j,neo4jclient,Neo4j,Neo4jclient,我知道如何动态地创建我的匹配和WHERE子句,不幸的是,在我的情况下,我不得不这么做。。。所以,我有一些类似的东西(这是一个人为的例子): 根据用户输入动态生成匹配和其中,从而生成正确的密码 MATCH (u1:User)-[:LINKED]->(w:Web), (u2:User)-[:LINKED]->(w:Web), (u3:User)-[:LINKED]->(w:Web) WHERE u1.User.Id = 1 AND u2.User.I

我知道如何动态地创建我的
匹配
WHERE
子句,不幸的是,在我的情况下,我不得不这么做。。。所以,我有一些类似的东西(这是一个人为的例子):

根据用户输入动态生成
匹配
其中
,从而生成正确的密码

MATCH 
    (u1:User)-[:LINKED]->(w:Web),  (u2:User)-[:LINKED]->(w:Web),  (u3:User)-[:LINKED]->(w:Web)
WHERE 
    u1.User.Id = 1
    AND u2.User.Id = 2
    AND u3.User.Id = 3
在服务器上(在Cypher中),我可以执行以下操作:

RETURN u1, u2, u3
我会找到我要找的3个节点。我的问题是,通过neo4jclient返回数据的
一般方法是通过表达式,因此,要进行复制,我将执行以下操作:

query.Return(
    (u1, u2, u3) => 
    { 
        U1 = u1.As<User>(), 
        U2 = u2.As<User>(), 
        U3 = u3.As<User>()
    });
query.Return(
(u1、u2、u3)=>
{ 
U1=U1.As(),
U2=U2.As(),
U3=U3.As()
});
我不知道只会有“3”个回答,可能会有更多,甚至更少。关于如何实现这一点有什么想法吗?无论是按现状,还是以完全不同的方式,我对所有的选择都持开放态度

我想做一些类似的事情:

 query.Return<User>("u1", "u2", "u3"); //returning IEnumerable<User>
query.Return(“u1”、“u2”、“u3”)//返回数
或者可能:

 query.Return<User>("u1").AndReturn("u2").AndReturn("u3"); 
query.Return(“u1”).AndReturn(“u2”).AndReturn(“u3”);

我知道,对于这些查询,我可以通过
HttpClient
或类似的方式直接调用数据库,但如果可以的话,我宁愿避免这样做。老实说,我很乐意将它们全部解析为
dynamic
,但这在目前是不可能的(或者是…:)。

Neo4jClient对于这样的动态返回形状没有任何好的解决方案

至少在这个人为设计的示例中,您可以将节点展平到单个列表中吗

.Return<IEnumerable<User>>("[u1, u2, u3]")
.Return(“[u1,u2,u3]”)

您可以很容易地通过
Id
属性判断哪个是哪个,您正在
WHERE
子句中使用该属性,但在C#中也可以使用该属性。

不幸的是,在
的代码中有一个检查,
导致异常:“您调用的重载使用一个标识(例如:foo)但是,如果我在调试器中跳过这一点,它将按预期工作,我将放入一个带有修复的pull请求…您本可以这样做。Return(()=>new{Users=Return.as(“[u1,u2,u3]”)。Results。SelectMany(r=>r.Users)作为笨拙的解决方法。:)
.Return<IEnumerable<User>>("[u1, u2, u3]")