在 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"),使用字符串重载。