将包含分割和toint的密码查询转换为C#

问题描述:

我刚开始为我的neo4j项目使用neo4j客户端,并且遇到了难以将下面的密码查询转换为C#的问题。特别是使用分割和toint函数。将包含分割和toint的密码查询转换为C#

如果你可以帮助我解决这个问题,我现在已经很久没有试过这个了。我甚至看了其他的网站资源,但从他们身上获益不多。感谢您的帮助。

MATCH 
    (a:Airport {city:"LAX"})-[:has_flight]->(f:Flight {dep_date:"2017-07-27"})-[:flies_to]->(b:Airport)-[:has_flight]->(f2:Flight)-[:flies_to]->(c:Airport {city:"CLO"}) 
WITH 
    a,b,c,f,f2, 
    split(f.arr_date,"-") as dd, 
    split(f2.dep_date,"-") as dd2 
WHERE 
    toint(dd2[2]) - toint(dd[2])>=0 
    AND toint(dd2[2])- toint(dd[2]) <=1 
RETURN 
    f,f2,a.city,b.city,c.city 
+3

对于我们那些不知道neo4j但知道c#的人,你能用英文写出算法吗?这将很容易,帮助将其转换为C#的方式.. –

你需要打破查询到它的组成部分,如果你使用的新线,是比较容易:

//MATCH 
match (a:Airport {city:"LAX"})-[:has_flight]->(f:Flight {dep_date:"2017-07-27"})-[:flies_to]->(b:Airport)-[:has_flight]->(f2:Flight)-[:flies_to]->(c:Airport {city:"CLO"}) 

//WITH 
with a,b,c,f,f2,split(f.arr_date,"-") as dd, split(f2.dep_date,"-") as dd2 

//WHERE 
where toint(dd2[2]) - toint(dd[2])>=0 
and toint(dd2[2])- toint(dd[2])<=1 

//RETURN 
return f,f2,a.city,b.city,c.city 

一旦拥有了它非常简单,转换为Neo4jClient,例如:

client.Cypher 
    .Match("(a:Airport {city:"LAX"})-[:has_flight]->(f:Flight {dep_date:"2017-07-27"})-[:flies_to]->(b:Airport)-[:has_flight]->(f2:Flight)-[:flies_to]->(c:Airport {city:"CLO"})") 
    .With("a,b,c,f,f2,split(f.arr_date,"-") as dd, split(f2.dep_date,"-") as dd2") 
    .Where("toint(dd2[2])- toint(dd[2])<=1") 
    .AndWhere("toint(dd2[2])- toint(dd[2])<=1") 
    .Return((f,f2,a.city,b.city,c.city) => new { 
     Flight1 = f.As<Flight>(), 
     Flight2 = f2.Asflight>(), 
     City1 = a.As<Airport>().City, 
     City2 = b.As<Airport>().City, 
     City3 = c.As<Airport>().City 
    }); 

显然,这种假设你有一个FlightAirport类。