2017-04-24 57 views
0

我有一個使用Dictionary<string, double>對象作爲foreach循環參數的chyper Query。我想訪問循環內的dictonary Keys,但這似乎不起作用,我總是得到一個無效的輸入錯誤:是否可以訪問用作foreach循環參數的字典的鍵?

輸入無效'。' {} rel.Key

我嘗試以下查詢:

string query = "MATCH(c: Component) WHERE c.Name= {component} 
FOREACH (rel in {relations}| MERGE (c) -[w:WEIGHT]->(d:Component {Name={rel.Key}}) 
SET w.Weight={rel.Value}))"; 

我的參數是follwing:

Dictionary<string, object> parameters = new Dictionary<string, object>(); 
parameters.Add("component", component); // string 
parameters.Add("relations", relations); // Dictionary<string, double> 
neo4jsession.Run(query, parameters); 

唯一的其他版本,我能想到的是使用Dictionary<string, double>數組一起使用放鬆,但有沒有辦法用一個詞典和foreach循環做到這一點?

信息:正如我在提問標題寫道:我用的是Neo4jDotNetDriver不是Neo4jclient

回答

1

我們必須調整語法有點訪問鍵和每個鍵的值。 keys()函數將獲得地圖的鍵列表。當我們有一個密鑰時,我們可以使用map[key]來訪問該密鑰的值。

string query = "WITH {relations} as relations 
       MATCH(c: Component) 
       WHERE c.Name= {component} 
       FOREACH (key in keys(relations)| 
       MERGE (c) -[w:WEIGHT]->(d:Component {Name:key}) 
       SET w.Weight = relations[key]))"; 
+0

這工作就像一個魅力,非常感謝你,我得到了我的查詢複製組件的問題,但我能找到我自己:)應該是一個解決方案 – Mapendra