2016-04-16 2 views
1

Я следующий запрос, который отлично работает в Neo4j,Как я Left Регистрация в Neo4jClient,

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 равно нулю) в .ReturnDistinct ((р, рр, ръ) или это неправильный путь

ответ

0

Чтобы получить 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") 
})