“无法将lambda表达式转换为'string'类型,因为它不是委托类型”Neo4jClient Query

时间:2013-05-15 12:26:13

标签: neo4j cypher neo4jclient

我试图在我的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

我在这里做错了什么?

由于

1 个答案:

答案 0 :(得分:1)

如果这是一个逐字复制粘贴,那么我猜你的问题是你写的:

.Where((VersionNode x) => x.Type = "Version")

当你需要写:

.Where((VersionNode x) => x.Type == "Version")

PS。问题的关键点IEnumerable<Node<VersionNode>> queryResult = null;而不仅仅是var queryResult =?你永远不会在任何其他路径中分配它,所以它只是浪费代码和额外的签名来维护。