我试图在我的Neo4j cypher查询中放置一个where子句来返回一些节点,这是我试图执行的查询:
start n = node:node_auto_index(Name = "Contact Details") Match (n)--(x) Where x.Type = "Version" Return x;
现在我的C#方法看起来像这样(使用Neo4jClient):
public IEnumerable<Node<VersionNode>> GraphGetAllVersionNodes(string nodeName)
{
clientConnection = graphOperations.GraphGetConnection();
IEnumerable<Node<VersionNode>> queryResult = null;
var query = clientConnection
.Cypher
.Start(new
{
n = Node.ByIndexLookup("node_auto_index", "Name", nodeName)
})
.Match("(n)--(x)")
.Where((VersionNode x) => x.Type = "Version")
.Return<Node<VersionNode>>("(x)")
.Results;
queryResult = query.ToList();
return queryResult;
}
现在where子句中有一个错误:
Cannot convert lambda expression to type 'string' because it is not a delegate type
我在这里做错了什么?
由于
答案 0 :(得分:1)
如果这是一个逐字复制粘贴,那么我猜你的问题是你写的:
.Where((VersionNode x) => x.Type = "Version")
当你需要写:
.Where((VersionNode x) => x.Type == "Version")
PS。问题的关键点IEnumerable<Node<VersionNode>> queryResult = null;
而不仅仅是var queryResult =
?你永远不会在任何其他路径中分配它,所以它只是浪费代码和额外的签名来维护。