동적으로 내 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
동적으로 사용자 입력에 기초하여 생성하고, 이는 올바른 사이퍼를 생성한다. (사이퍼에서) 서버에서
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
내가 좋아하는 뭔가를 할 수 있습니다
RETURN u1, u2, u3
을하고 내가 찾고 있어요 3 개 노드를 얻을 수 있습니다. 이있을 수 있습니다, 나는 단지 '3'응답이있을 것이라는 점을 모르는
query.Return(
(u1, u2, u3) =>
{
U1 = u1.As<User>(),
U2 = u2.As<User>(),
U3 = u3.As<User>()
});
다음 neo4jclient는 표현을 통해, 그래서, 내가 할 것 복제를 통해 내 문제는 Returning
데이터의 일반적인 방법입니다 더 많거나 적다. 이것을 달성하는 방법에 대한 아이디어가 있습니까? 있는 그대로 또는 완전히 다른 방식으로, 나는 모든 옵션에 열려 있습니다. 어쩌면
query.Return<User>("u1", "u2", "u3"); //returning IEnumerable<User>
나 :
내가 좋아하는 뭔가를하고 싶습니다 내가 직접 HttpClient
또는 일부 등을 통해 DB를 호출 이러한 쿼리를 되돌릴 수 있습니다 알고
query.Return<User>("u1").AndReturn("u2").AndReturn("u3");
,하지만 난 할 수 있으면 오히려 그것을 피하십시오. 솔직히 말해서 나는 그들 모두를 dynamic
에 파싱하는 것에 만족할 것이지만, 그것은 현재 불가능하다 (또는 그것 ??? ??? :)).
불행히도','에 대한 검사에서 예외가 발생합니다 : "호출 한 과부하는 ID (예 : foo)를 취하지 만 전달하려고 시도한 것처럼 보입니다 다중 열 문 (예 : foo, bar) " –
그러나 예상대로 디버거에서 건너 뛰면 해결할 수있는 풀 요청을 넣습니다 ... –
할 수 있습니다. 돌아 오십시오. ("[u1, u2, u3]")}). Results.SelectMany (r => r.Users)는 이상한 해결 방법입니다. :) –