在 Neo4jclient 查询的 where 子句中使用 with 子句中定义的别名
Use alias defined in a with-clause in a where-clause of a Neo4jclient query
我想在 neo4jclient 中为此密码查询创建一个查询:
MATCH (price:Item)-->(item:Item)
WHERE (item.Id = 2)
WITH item, max(price.Timestamp) AS maxDate
MATCH (price:Item)-->(item:Item)
WHERE (price.Timestamp = maxDate)
RETURN price
我已经想到了这段代码:
_graphClient.Cypher
.Match("(price:Price)-->(item:Item)")
.Where((Item item) => item.Id == 2)
.With((price, item) => new
{
item,
maxDate = Return.As<DateTimeOffset>("max(price.Timestamp)")
})
.Match("(price:Price)-->(item:Item)")
.Where((Price price) => price.Timestamp == Return.As<DateTimeOffset>("maxDate"))
.Return(price=> price.As<Price>())
但是这个 returns qoutes 中的 maxDate 别名:
MATCH (price:Item)-->(item:Item)
WHERE (item.Id = 2)
WITH item, max(price.Timestamp) AS maxDate
MATCH (price:Item)-->(item:Item)
WHERE (price.Timestamp = "maxDate") <--
RETURN price
正确的做法是什么?
在代码方面 Return.As
语句用于帮助 Neo4jClient
知道将结果解析为什么(当在 Return
语句中使用时)并且 With
被处理以同样的方式。
使用它们时,它们会输出您看到的 Cypher
(因此 "max.Timestamp as maxDate"
),并且 Return.As
将始终输出那种响应样式:/
我所知道的以你想要的方式获得 Where
的唯一方法是通过 Where("price.Timetamp = maxDate")
,使用字符串重载。
我想在 neo4jclient 中为此密码查询创建一个查询:
MATCH (price:Item)-->(item:Item)
WHERE (item.Id = 2)
WITH item, max(price.Timestamp) AS maxDate
MATCH (price:Item)-->(item:Item)
WHERE (price.Timestamp = maxDate)
RETURN price
我已经想到了这段代码:
_graphClient.Cypher
.Match("(price:Price)-->(item:Item)")
.Where((Item item) => item.Id == 2)
.With((price, item) => new
{
item,
maxDate = Return.As<DateTimeOffset>("max(price.Timestamp)")
})
.Match("(price:Price)-->(item:Item)")
.Where((Price price) => price.Timestamp == Return.As<DateTimeOffset>("maxDate"))
.Return(price=> price.As<Price>())
但是这个 returns qoutes 中的 maxDate 别名:
MATCH (price:Item)-->(item:Item)
WHERE (item.Id = 2)
WITH item, max(price.Timestamp) AS maxDate
MATCH (price:Item)-->(item:Item)
WHERE (price.Timestamp = "maxDate") <--
RETURN price
正确的做法是什么?
在代码方面 Return.As
语句用于帮助 Neo4jClient
知道将结果解析为什么(当在 Return
语句中使用时)并且 With
被处理以同样的方式。
使用它们时,它们会输出您看到的 Cypher
(因此 "max.Timestamp as maxDate"
),并且 Return.As
将始终输出那种响应样式:/
我所知道的以你想要的方式获得 Where
的唯一方法是通过 Where("price.Timetamp = maxDate")
,使用字符串重载。