我有一个密码查询来比较两个日期。但它得到错误。这个查询有什么问题?有人可以帮忙吗?
GraphClient client= new GraphClient(new Uri("http://localhost:7474/"));
client.Connect();
var date=client.Cypher
.Match("(e2:Event)")
.Where((Event e2) => Convert.ToDateTime(e2.notificationTime).CompareTo(DateTime.Now) < 0 )
.return(e=>e.As<Event>()).Results;
错误:
SyntaxException: Invalid input '{': expected an identifier character, whitespace, '?', '!', '.', node labels, '[', "=~", IN, IS, '*', '/', '%', '^', '+', '-', '<', '>', "<=", ">=", '=', "<>", "!=", AND, XOR, OR or ')' (line 25, column 25)"AND (e2.notificationTime{p7} < {p8})
答案 0 :(得分:1)
首先,改变&#34; AndWhere&#34;部分到&#34;哪里&#34;因为你不需要链接&#39;哪里有&#39;该代码中的子句。也许这就是它无法转化为密码的原因。
如果它仍然不能正常工作,那我就说这个问题在你的&#39; Where&#39;条款。它可能是Convert.ToDateTime()。CompareTo无法转换为cypher。您应该尝试简化您的代码。这取决于你的e2.notificationTime是什么类型。 对于instanse,如果是Unix格式:
var currentDate = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
GraphClient client= new GraphClient(new Uri("http://localhost:7474/"));
client.Connect();
var date=client.Cypher
.Match("(e2:Event)")
.Where((Event e2) => e2.notificationTime < currentDate)
.Return(e=>e.As<Event>()).Results;
你必须摆脱其中的任何复杂表达方式,其中&#39;因为它正在转化为cypher