在 neo4j .net 客户端中使用 cypher foreach
using cypher foreach In neo4j .net client
我将 C# 中的 neo4j 与 Neo4jClient v 1.1.0.34 一起使用,并希望使用 foreach 更新 C# 中记录的多个值,我有以下代码:
graphClient.Cypher.Match("(u:User)-[:HAS_EMAIL]->(e:Email)-[:HAS_VER_CODE]->(s:VerCode)"
)
.Where((User u, Email e, VerCode s) => (
u.id == user.id && e.address == email.address
&& e.isVerified == false && s.expiry > DateTime.Now))
.Set("s.expiry = {now}")
.WithParam("now", DateTime.Now)
.ExecuteWithoutResults();
照原样,上面的代码没有在任何匹配节点上设置到期字段。
我需要将过期字段设置为当前日期时间,但我不知道如何使用 .foreach(并且未能在 C# 中找到任何示例),每个模板的 .for 是这样给出的:
.foreach (var item in collection){}
感谢您的宝贵时间,
阿德里安
抱歉 - 完全误解了您的问题。
在 Cypher 中使用 foreach
与在 C#
中使用 foreach
不同,您需要的是您要搜索的内容的集合,:
public class IdAndEmail { int Id {get;set;} string Address {get;set;} }
var idAndEmails = new List<IdAndEmail>{ new IdAndEmail { Id = 1, Address = "a@b.com"} /*etc*/ };
一旦你有了它,你的密码就变成了:
graphClient.Cypher.Foreach(idAndEmails, "x")
.Match("(u:User)-[:HAS_EMAIL]->(e:Email)-[:HAS_VER_CODE]->(s:VerCode)")
.Where("u.id = x.Id AND e.address = x.Address")
.AndWhere((Email e, VerCode s) => (e.isVerified == false && s.expiry > DateTime.Now))
.Set("s.expiry = {now}")
.WithParam("now", DateTime.Now)
.ExecuteWithoutResults();
我不是在某个地方输入此代码,我可以完全测试代码在语法方面是否正确,但这应该可以帮助您。
我将 C# 中的 neo4j 与 Neo4jClient v 1.1.0.34 一起使用,并希望使用 foreach 更新 C# 中记录的多个值,我有以下代码:
graphClient.Cypher.Match("(u:User)-[:HAS_EMAIL]->(e:Email)-[:HAS_VER_CODE]->(s:VerCode)"
)
.Where((User u, Email e, VerCode s) => (
u.id == user.id && e.address == email.address
&& e.isVerified == false && s.expiry > DateTime.Now))
.Set("s.expiry = {now}")
.WithParam("now", DateTime.Now)
.ExecuteWithoutResults();
照原样,上面的代码没有在任何匹配节点上设置到期字段。
我需要将过期字段设置为当前日期时间,但我不知道如何使用 .foreach(并且未能在 C# 中找到任何示例),每个模板的 .for 是这样给出的:
.foreach (var item in collection){}
感谢您的宝贵时间,
阿德里安
抱歉 - 完全误解了您的问题。
在 Cypher 中使用 foreach
与在 C#
中使用 foreach
不同,您需要的是您要搜索的内容的集合,:
public class IdAndEmail { int Id {get;set;} string Address {get;set;} }
var idAndEmails = new List<IdAndEmail>{ new IdAndEmail { Id = 1, Address = "a@b.com"} /*etc*/ };
一旦你有了它,你的密码就变成了:
graphClient.Cypher.Foreach(idAndEmails, "x")
.Match("(u:User)-[:HAS_EMAIL]->(e:Email)-[:HAS_VER_CODE]->(s:VerCode)")
.Where("u.id = x.Id AND e.address = x.Address")
.AndWhere((Email e, VerCode s) => (e.isVerified == false && s.expiry > DateTime.Now))
.Set("s.expiry = {now}")
.WithParam("now", DateTime.Now)
.ExecuteWithoutResults();
我不是在某个地方输入此代码,我可以完全测试代码在语法方面是否正确,但这应该可以帮助您。