0

我试图在我的 Neo4j 密码查询中放置一个 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

我在这里做错了什么?

谢谢

4

1 回答 1

1

如果那是逐字复制粘贴,那么我猜问题是您写道:

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

当你需要写:

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

PS。IEnumerable<Node<VersionNode>> queryResult = null;而不是 just有什么意义var queryResult =?您永远不会在任何其他路径中分配它,因此这只是浪费代码和需要维护的额外签名。

于 2013-05-15T12:42:13.300 回答