运算符与 Neo4jClient 的逻辑分组
Logical grouping of operator with Neo4jClient
我似乎无法弄清楚如何使用 Neo4jClient 编写此查询
MATCH (n)
WHERE (n.Id="1ef17d65-492e-4c0d-aa79-13065edd37f2" AND n.CaseType="NaturalPerson") OR (n.Id="a5c143d4-0306-4057-a96f-e39c5c50eb22" AND n.CaseType="NaturalPerson")
RETURN n
如果我这样写查询
this.client.Cypher.Match("(n)")
.Where("f.Id=\"1ef17d65-492e-4c0d-aa79-13065edd37f2\"")
.AndWhere("n.CaseType=\"NaturalPerson\"")
.OrWhere("f.Id=\"1ef17d65-492e-4c0d-aa79-13065edd37f2\"")
.AndWhere("n.CaseType=\"NaturalPerson\"")
.Return((n, r) => n.As<T>());
生成了以下查询,但它没有将两个 and 子句逻辑分组的括号 '(' ')'
MATCH (n)
WHERE f.Id="1ef17d65-492e-4c0d-aa79-13065edd37f2"
AND n.CaseType="NaturalPerson"
OR f.Id="1ef17d65-492e-4c0d-aa79-13065edd37f2"
AND n.CaseType="NaturalPerson"
RETURN n AS Node, r AS Metadata
你要么:
.Where("n.Id='1ef17d65-492e-4c0d-aa79-13065edd37f2' AND n.CaseType='NaturalPerson')
.OrWhere("n.Id='a5c143d4-0306-4057-a96f-e39c5c50eb22' AND n.CaseType='NaturalPerson'")
或者,您可以将所有内容合二为一.Where
但是,如果是我,我会这样做:
.Where("n.CaseType = 'NaturalPerson')
.AndWhere("n.Id IN ['1ef17d65-492e-4c0d-aa79-13065edd37f2','a5c143d4-0306-4057-a96f-e39c5c50eb22']
而且我肯定会使用这样的参数:
var ids = new [] {'a5c143d4-0306-4057-a96f-e39c5c50eb22', '1ef17d65-492e-4c0d-aa79-13065edd37f2'};
var caseType = "NaturalPerson";
this.client.Cypher.Match("(n)")
.Where("n.CaseType = $caseTypeParam")
.AndWhere("n.Id IN $idsParam")
.WithParam("caseTypeParam", caseType)
.WithParam("idsParam", ids")
/*.. etc..*/
我似乎无法弄清楚如何使用 Neo4jClient 编写此查询
MATCH (n)
WHERE (n.Id="1ef17d65-492e-4c0d-aa79-13065edd37f2" AND n.CaseType="NaturalPerson") OR (n.Id="a5c143d4-0306-4057-a96f-e39c5c50eb22" AND n.CaseType="NaturalPerson")
RETURN n
如果我这样写查询
this.client.Cypher.Match("(n)")
.Where("f.Id=\"1ef17d65-492e-4c0d-aa79-13065edd37f2\"")
.AndWhere("n.CaseType=\"NaturalPerson\"")
.OrWhere("f.Id=\"1ef17d65-492e-4c0d-aa79-13065edd37f2\"")
.AndWhere("n.CaseType=\"NaturalPerson\"")
.Return((n, r) => n.As<T>());
生成了以下查询,但它没有将两个 and 子句逻辑分组的括号 '(' ')'
MATCH (n)
WHERE f.Id="1ef17d65-492e-4c0d-aa79-13065edd37f2"
AND n.CaseType="NaturalPerson"
OR f.Id="1ef17d65-492e-4c0d-aa79-13065edd37f2"
AND n.CaseType="NaturalPerson"
RETURN n AS Node, r AS Metadata
你要么:
.Where("n.Id='1ef17d65-492e-4c0d-aa79-13065edd37f2' AND n.CaseType='NaturalPerson')
.OrWhere("n.Id='a5c143d4-0306-4057-a96f-e39c5c50eb22' AND n.CaseType='NaturalPerson'")
或者,您可以将所有内容合二为一.Where
但是,如果是我,我会这样做:
.Where("n.CaseType = 'NaturalPerson')
.AndWhere("n.Id IN ['1ef17d65-492e-4c0d-aa79-13065edd37f2','a5c143d4-0306-4057-a96f-e39c5c50eb22']
而且我肯定会使用这样的参数:
var ids = new [] {'a5c143d4-0306-4057-a96f-e39c5c50eb22', '1ef17d65-492e-4c0d-aa79-13065edd37f2'};
var caseType = "NaturalPerson";
this.client.Cypher.Match("(n)")
.Where("n.CaseType = $caseTypeParam")
.AndWhere("n.Id IN $idsParam")
.WithParam("caseTypeParam", caseType)
.WithParam("idsParam", ids")
/*.. etc..*/