2013-08-01 5 views
0

Neo4jClient를 사용하여 동적 Cypher 쿼리를 만들려고합니다. Neo4jClient에서 시작하면 내 코드가 매우 중복되고 있습니다. .Start에서 인덱스에서 노드를 얻고 싶습니다. 노드는 1에서 10까지의 변수를 가질 수 있습니다. 그래서 정말 길어지는 switch 문을 만들어야합니다. 두 개의 노드를 들어동적으로 Neo4jClient에서 쿼리를 생성합니다.

   .Start(new 
       { 
        n = Node.ByIndexLookup("name_idx", "Name", sNameArray[0]), 
       }) 

, 그것은

   .Start(new 
       { 
        n = Node.ByIndexLookup("name_idx", "Name", sNameArray[0]), 
        m = Node.ByIndexLookup("name_idx", "Name", sNameArray[1]), 
       }) 

등 .Match 및 .With 동적 문자열 연산을 사용하여 생성되는

, 그래서 아무 문제가있다. . 반환은 반환 값이 제한되어 있으므로 문제도 없습니다.

내 주된 관심사는 때문입니다. 시작. 전체 .Cypher 문을 반복해야합니다. 내가 그걸 해결할 수 있다면, 나는 훌륭한 깨끗한 코드를 갖게 될 것이다. 어떤 제안? 예를 들어 두 번째 버전이 될 수 있도록

답변

3

당신은 사전을 사용할 수 있습니다

var start = new Dictionary<string, object>(); 
for(int i = 0; i < sNameArray.Length; i++) 
{ 
     start.Add("n" + i, Node.ByIndexLookup("name_idx", "Name", sNameArray[i])); 
} 

graphClient.Cypher.Start(start).Where(/**** ETC ****/); 
+0

좋은 대답 크리스 : 당신이 그런 짓을 할 수 있도록 할

.Start(new Dictionary<string, object>{ {"n", Node.ByIndexLookup("name_idx", "Name", sNameArray[0])}, {"m", Node.ByIndexLookup("name_idx", "Name", sNameArray[1])}, } 

합니다. :) –

+0

Tatham으로 시작하는 좋은 코드 :) –

관련 문제