我是第一次使用neo4j编写.NET机场应用程序。我有一个API,可以获取数据库中的对象(本例中的机场)。我也可以用
创建新的机场public void Post([FromUri]string name, [FromUri]string code, [FromUri]string city, [FromUri]string state)
{
string query = "(:Airport{name:'" + name + "',code:'" + code.ToUpper() + "',city:'" + city + "',state:'" + state.ToUpper() + "'})";
var q = WebApiConfig.GraphClient.Cypher.Create(query);
q.ExecuteWithoutResults();
}
工作正常。但我也想确保数据库中尚不存在机场。所以我试图添加代码:
var existing = WebApiConfig.GraphClient.Cypher.Match("(a:Airport)")
.Where((Airport a) => a.Code.Equals(code.ToUpper()))
.Return(a => a.As<Airport>());
但是当我运行此代码部分时,它总是会抛出SyntaxException
。我认为它是在where子句的构造中。
我的Airport
课程是
public class Airport
{
public string City { get; set; }
public string State { get; set; }
public string Code { get; set; }
}
我使用的当前资源是https://github.com/Readify/Neo4jClient/wiki/cypher。
两个问题:
谢谢
答案 0 :(得分:1)
由于nums = [3,3]
def remove_element(nums, val)
nums.delete_if { |element| element == val }
nums.length
end
remove_element(nums, 3)
#=> 0
不知道如何处理require 'benchmark'
array = Array.new(100000) { rand(5) }
Benchmark.bm do |x|
x.report("delete: ") { array.delete(5) }
x.report("delete_if: ") { array.delete_if { |e| e == 5 } }
x.report("reject: ") { array.reject! { |e| e == 5 } }
end
# user system total real
# delete: 0.000000 0.000000 0.000000 ( 0.004230)
# delete_if: 0.010000 0.000000 0.010000 ( 0.006387)
# reject: 0.010000 0.000000 0.010000 ( 0.007543)
而导致SyntaxException
被抛出 - 如果您接受查询并查看Neo4jClient
您&# 39;我会看到它的输出(我传入&#39;松弛&#39;为.Equals
):
existing.Query.DebugQueryText
code
来自MATCH (a:Airport)
WHERE a.Code"lax"
RETURN a
- 因此您需要首先更改为使用SyntaxException
运算符:
WHERE a.Code"lax"
现在,如果我们看一下==
,我们得到:
var existing = gc.Cypher.Match("(a:Airport)")
.Where((Airport a) => a.Code == code.ToUpper())
.Return(a => a.As<Airport>());
但是&#34;松弛&#34;小写 - 我们把QueryDebugText
放在那里,所以它应该是&#34; LAX&#34;右??
MATCH (a:Airport)
WHERE (a.Code = "lax")
RETURN a
的细微差别在于它需要具有查询所需的详细信息,所以这样做:
ToUpper()
将生成:
Neo4jClient
您可以使用code = code.ToUpper();
var existing = gc.Cypher.Match("(a:Airport)")
.Where((Airport a) => a.Code == code)
.Return(a => a.As<Airport>());
之类的方法,但最终必须将它们放在MATCH (a:Airport)
WHERE (a.Code = "LAX")
RETURN a
或插值中:
ToUpper
这是一种痛苦,因为您需要记住string.Format
和打开/关闭括号。
一般提示是始终查看var existing = gc.Cypher.Match("(a:Airport)")
.Where($"(a.Code = \"{code.ToUpper()}\")")
.Return(a => a.As<Airport>());
以查看正在生成的内容。
关于更多资源的第二个问题 - 我担心没有:(