如何解决如何在 Cypher Query 中的 where IN 子句中使用 int[]使用 C#
int[] pIds = new int[] {101,012};
var query = _graphClient.Cypher.Read
.OptionalMatch($"(p: {Labels.PERSON})")
.Where($"p.Id IN [{pIds}]")
.Return<Person>(p);
在调试时它看起来像这样:
OPTIONAL MATCH (p: Person)
WHERE p.Id IN [system.int32[]]
RETURN distinct p
我应该在这个 where 子句 [101,012] 中传递的值,但它不是。因为 pIds[0] = 101,pIds[1] = 012 - 并且它永远不会在密码查询中读取。
我哪里出错了,没有传递值?我应该如何在 Where IN 中传递 int[]...
解决方法
最好使用参数:
int[] pIds = new int[] {101,012};
var query = _graphClient.Cypher.Read
.OptionalMatch($"(p: {Labels.PERSON})")
.Where($"p.Id IN $pIds")
.Return<Person>(p)
.WithParam("pIds",pIds);
,
我通过将 int[] 放入一个由,分隔的字符串来解决它
var param = string.Join(",",myIntList);
var query = _graphClient.Cypher.Read
.OptionalMatch($"(p: {Labels.PERSON})")
.Where($"p.Id IN $param")
.Return<Person>(p)
.WithParam("param",param)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。