将包含分割和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
答
你需要打破查询到它的组成部分,如果你使用的新线,是比较容易:
//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
});
显然,这种假设你有一个Flight
和Airport
类。
对于我们那些不知道neo4j但知道c#的人,你能用英文写出算法吗?这将很容易,帮助将其转换为C#的方式.. –