我怎样才能在 Neo4jClient 中进行 Left Join,
How can I do Left Join in Neo4jClient,
我有以下查询在 neo4j 中运行良好,
MATCH (p:Product)
OPTIONAL MATCH
(p)-[r2:SCP_HAS_SCMVSV]-(pv:ProductSCMVSValue)
OPTIONAL MATCH
(pv)-[r3:SCMVS_IN_SCPS]-(ps:ProductStorage)
OPTIONAL MATCH
(pv)-[r5:SCP_HAS_SCPP]-(pp:ProductPrice)
return p,r2 is null,pv,pp,ps
当我将查询转换为 neo4jclient 时,它是这样的:
var retxx = client.Cypher
.Match("(sc:ProductSpecCategory)-[r:SCMVS_IN_SC]-(p:Product)").
OptionalMatch("(p)-[r2:SCP_HAS_SCMVSV]-(pv:ProductSCMVSValue)").
OptionalMatch("(pv)-[r3:SCMVS_IN_SCPS]-(ps:ProductStorage)").
OptionalMatch("(pv)-[r5:SCP_HAS_SCPP]-(pp:ProductPrice)")
.Where("sc.Id = {param2}").WithParam("param2", scId)
.ReturnDistinct((p, pp, pv) => new
{
CurrentValues = pv.CollectAs<ProductSCMultiValueSpecValue>(),
CurrentPrice = pp.CollectAs<ProductPrice>(),
CurrentProduct = p.As<Product>(),
}).Results.ToList();
如何将 (r2 为 null) 放入 .ReturnDistinct((p, pp, pv) 中,否则这是错误的方式?
要获得 r2 IS NULL
位 - 您应该使用 Return.As
方法:
.ReturnDistinct((p, pp, pv) => new
{
CurrentValues = pv.CollectAs<ProductSCMultiValueSpecValue>(),
CurrentPrice = pp.CollectAs<ProductPrice>(),
CurrentProduct = p.As<Product>(),
R2IsNull = Return.As<bool>("r2 IS NULL")
})
我有以下查询在 neo4j 中运行良好,
MATCH (p:Product)
OPTIONAL MATCH
(p)-[r2:SCP_HAS_SCMVSV]-(pv:ProductSCMVSValue)
OPTIONAL MATCH
(pv)-[r3:SCMVS_IN_SCPS]-(ps:ProductStorage)
OPTIONAL MATCH
(pv)-[r5:SCP_HAS_SCPP]-(pp:ProductPrice)
return p,r2 is null,pv,pp,ps
当我将查询转换为 neo4jclient 时,它是这样的:
var retxx = client.Cypher
.Match("(sc:ProductSpecCategory)-[r:SCMVS_IN_SC]-(p:Product)").
OptionalMatch("(p)-[r2:SCP_HAS_SCMVSV]-(pv:ProductSCMVSValue)").
OptionalMatch("(pv)-[r3:SCMVS_IN_SCPS]-(ps:ProductStorage)").
OptionalMatch("(pv)-[r5:SCP_HAS_SCPP]-(pp:ProductPrice)")
.Where("sc.Id = {param2}").WithParam("param2", scId)
.ReturnDistinct((p, pp, pv) => new
{
CurrentValues = pv.CollectAs<ProductSCMultiValueSpecValue>(),
CurrentPrice = pp.CollectAs<ProductPrice>(),
CurrentProduct = p.As<Product>(),
}).Results.ToList();
如何将 (r2 为 null) 放入 .ReturnDistinct((p, pp, pv) 中,否则这是错误的方式?
要获得 r2 IS NULL
位 - 您应该使用 Return.As
方法:
.ReturnDistinct((p, pp, pv) => new
{
CurrentValues = pv.CollectAs<ProductSCMultiValueSpecValue>(),
CurrentPrice = pp.CollectAs<ProductPrice>(),
CurrentProduct = p.As<Product>(),
R2IsNull = Return.As<bool>("r2 IS NULL")
})