我在使用Collection<>的人的StackOverflow上看到了一些代码对于Neo4jClient,但我无法在任何命名空间中找到它。
此外,我无法在Github页面上找到任何数组或集合。我是Neo4jClient的新手,请原谅新手问题(如果是这样的话)
那么,有人可以告诉我如何使用C#在Neo4jClient中使用数组吗?如有必要,请包含任何名称空间。
我在谈论序列化数组(例如:string [],List或Collection<>)
由于
答案 0 :(得分:0)
Cypher查询的最后一步,.Results
返回IEnumerable
。你可以用它做任何你想做的事。每次枚举它时,它都会针对Neo4j运行查询。
例如,
var users = client.Cypher
.Match("(user:User)")
.Return(user => user.As<User>())
.Results;
foreach (var user in users) // The query actual runs here
{
}
这意味着如果你通过它枚举两次,你实际上会对数据库运行两次查询:
例如,
var users = client.Cypher
.Match("(user:User)")
.Return(user => user.As<User>())
.Results;
foreach (var user in users) // The query actual runs here
{
}
foreach (var user in users) // And then it runs again here
{
}
现在,这通常不是你想要的。您不希望将额外的调用发送到数据库,并且您不希望数据更改的风险。
为了解决这个问题,人们通常会使用ToArray()
或ToList()
强制它进行早期枚举。这些来自System.Linq
。
例如,
var users = client.Cypher
.Match("(user:User)")
.Return(user => user.As<User>())
.Results
.ToList(); // The query runs here now
foreach (var user in users) // This just enumerates the in-memory list
{
}
foreach (var user in users) // This just enumerates the in-memory list
{
}
这些都不是特定于Neo4jClient的:它只是enumerables如何在.NET中运行。