1
我知道如何動態地創建我的MATCH
和WHERE
子句,而在我的情況下,它不幸是我必須做的事情......所以,我有類似的東西(這是一個人爲的例子):從Neo4jclient動態返回
var query = client
.Cypher
.Match("(u1:User)-[:LINKED]->(w:Web)","(u2:User)-[:LINKED]->(w:Web)","(u3:User)-[:LINKED]->(w:Web)")
.Where("u1.User.Id = {u1Param}").WithParam("u1Param", 1)
.AndWhere("u2.User.Id = {u2Param}").WithParam("u2Param", 2)
.AndWhere("u3.User.Id = {u3Param}").WithParam("u3Param", 3);
的Match
和Where
基於用戶輸入是動態生成的,並且這產生了正確的Cypher支架。
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個節點我在尋找。我的問題是Returning
數據的通用方式通過neo4jclient是通過表達,所以,複製我會做:
query.Return(
(u1, u2, u3) =>
{
U1 = u1.As<User>(),
U2 = u2.As<User>(),
U3 = u3.As<User>()
});
我不知道,只會有「3」的反應,有可能是更多,甚至更少。任何想法如何實現這一目標?無論是現狀,還是完全不同的方式,我都樂於接受所有選擇。
我想是這樣的:
query.Return<User>("u1", "u2", "u3"); //returning IEnumerable<User>
或可能:
query.Return<User>("u1").AndReturn("u2").AndReturn("u3");
我知道我可以直接通過HttpClient
或一些這樣這些查詢返回到調用分貝,但我如果可以的話,寧願避免。說實話,我很樂意將它們全部解析到dynamic
,但目前還不可能(或者是??? :))。
不幸的是,在'''的代碼中有一個檢查會導致一個異常:「你調用的重載需要一個標識(例如:foo),但它看起來像你試圖傳入一個多列語句(例如:foo,bar)「 –
但是,如果我在調試器中跳過它,它會按預期工作,我將在修復中發出一個請求... –
您可以完成。返回()=> new {Users = Return.As>(「[u1,u2,u3]」)})。Results.SelectMany(r => r.Users)是一個笨重的解決方法。 :) –