2017-11-15 9 views
0

すべての送信エッジを通過してオブジェクトのコレクションを取得する必要があります。エッジとそれに付随する頂点。 教えてください:この繰り返しを実行するには?オブジェクトのコレクションを取得する方法<edge、vertex> .NET Cypher vs. C#

+0

'パース()'メソッドはあなたを与えるし、[ 'IEnumerable'] (https://msdn.microsoft.com/en-us/library/system.collections.ienumerable(v=vs.110).aspx)、結果を簡単に取得して反復する必要があります。 foreachループを使用します。 –

答えて

0

質問はスーパー明確ではないが、ガボールは言及したように、あなたは結果を反復処理するために探しているなら、あなたはforeachを使用し、すなわち:

var results = Parse("word"); 
foreach(var ev in results){ 
    //Do something with ev 
} 

あなたが均等にforループを使用することができます - しかし、あなたは結果を.ToList()する必要があるだろう:

var results = Parse("word").ToList(); 
for(int i = 0; i < results.Count; i++){ 
    //Do something with results[i] 
} 

あなたcypherは最初のオフ、チューニングのビットの恩恵を受ける - OptionalMatchを使用する必要はありません - あなたがに結果を必要としますとにかく何も返ってこないだろう。また、少なくともaノードでは、多種多様のlabelを使用する必要があります。また、サーバーからさらにパフォーマンスを得るには、parametersを使用する必要があります。これはかなり長時間実行するつもりされている任意の大きなグラフで

public IEnumerable<EdVeObj> Parse(string word) 
{ 
    var res = graphClient.Cypher 
     .Match("(:YOUR_LABEL_HERE {name:$word})-[r]->(b)") 
     .WithParam("word", word) 
     .Return((r, b) => new EdVeObj 
      { 
       RelUp = r.As<Edge>(), 
       Target = b.<Vertex>() 
      }) 
     .Results;    

    return res; 
} 

:私はあなたのコードを変更します

/

関連する問題