2017-10-02 2 views
0

すべてをリンクしている曜日のリストを生成するプログラムを作成しようとしています。 (月曜日) - >(火曜日) - >(水曜日)...私はCypherのクエリーをWebインターフェイスから直接書くことでこれを行うことができますが、C#ではGraphDatabase.Driver 。 1日目を作成するクエリは機能しているようですが、何らかの理由で2回目のクエリが機能していません。コードはこちら.netを使用した単一のneo4jクエリーでの一致と作成の実行

string[] days = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" }; 

using (var driver = GraphDatabase.Driver("bolt://localhost:7687", AuthTokens.Basic(<my_username>, <my_password>))) 
     using (var session = driver.Session()) 
     { 

      session.Run("CREATE (d1: Day {day: {Day1}}) ", new Dictionary<string, object> { { "Day1", days[0] }}); 

      for (int i = 1; i < days.Length-2; i++) 
      { 
       session.Run("" + 
        "Match (d :Day {day:'{day1} '}) " + 
        "WITH d " + 
        " CREATE (d)-[:before] -> (d2 :Day {day:'{day2}'}) ", new Dictionary<string, object> { { "day1", days[i-1] }, { "day2", days[i] } }); 
      } 
     } 

答えて

0

パラメータの前後にアポストロフィを追加しないでください。最初のCREATEクエリでは、このルールは維持されますが、2番目のクエリでは、'{day1} ''{day2}'をアポストロフィで囲まないでください。

あなたはまた、単一のサイファーのコマンドで全体のリンクリストを作成することができます。

WITH ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] as days 
UNWIND days AS day 
CREATE (:Day {day: day}) 
WITH DISTINCT days 
UNWIND range(0, length(days) - 2) AS i 
MATCH (d1:Day {day: days[i]}), (d2:Day {day: days[i+1]}) 
CREATE (d1)-[:before]->(d2) 

この最初の関係を作成するための指標のセットを介して、その後日間のノード(合計7)、繰り返し処理を作成し、 (6)。

+0

ご協力いただきありがとうございます。 –

+0

どうぞよろしくお願いいたします。この回答があなたのニーズを十分に満たしている場合は、それを合格とマークしてください。 –

関連する問題