使用neo4j客户端构建动态查询

使用neo4j客户端构建动态查询,neo4j,neo4jclient,Neo4j,Neo4jclient,我阅读了许多关于此主题的问题,并创建了以下几乎动态的查询: var resQuery = WebApiConfig.GraphClient.Cypher .Match("(movie:Movie {title:{title}})") .WithParam("title", title) .Return(() => new { movie = Return.

我阅读了许多关于此主题的问题,并创建了以下几乎动态的查询:

var resQuery = WebApiConfig.GraphClient.Cypher
                .Match("(movie:Movie {title:{title}})")
                .WithParam("title", title)
                .Return(() => new {
                    movie = Return.As<string>("movie.title")
                }).Results;
var resQuery=WebApiConfig.GraphClient.Cypher
.Match(((电影:电影{title:{title}}]))
.WithParam(“标题”,标题)
.Return(()=>新建{
movie=Return.As(“movie.title”)
}).结果;
不幸的是,这不是动态的,因为我在returnanonymous类型中声明了movie属性

在所有示例中,我发现唯一的选择是返回节点,因为对象与节点属性匹配, 比如:
movie=Return.As(“movie.title”)

我希望Return语句返回所有节点属性的键值对列表(可以是JSON等任何表示形式),因为 我的节点是泛型的,而不是每次都来自特定的对象类型


这可能吗?

您可以这样做:

var resQuery = WebApiConfig.GraphClient.Cypher
    .Match("(movie:Movie {title:{title}})")
    .WithParam("title", title)
    .Return(() => Return.As<Node<Dictionary<string,string>>>("movie"));

var results = resQuery.Results.Select(r => r.Data);
Console.WriteLine(results.First()["title"]);
var resQuery=WebApiConfig.GraphClient.Cypher
.Match(((电影:电影{title:{title}}]))
.WithParam(“标题”,标题)
.Return(()=>Return.As(“电影”));
var results=resQuery.results.Select(r=>r.Data);
Console.WriteLine(results.First()[“title”]);
或者,类似于:

var resQuery = WebApiConfig.GraphClient.Cypher
    .Match("(movie:Movie {title:{title}})")
    .WithParam("title", title)
    .Return(() => Return.As<Node<string>>("movie"));

var results = resQuery.Results;
List<dynamic> nodes = results.Select(r => JsonConvert.DeserializeObject<dynamic>(r.Data)).ToList();
Console.WriteLine(nodes[0].title);
var resQuery=WebApiConfig.GraphClient.Cypher
.Match(((电影:电影{title:{title}}]))
.WithParam(“标题”,标题)
.Return(()=>Return.As(“电影”));
var results=resQuery.results;
List nodes=results.Select(r=>JsonConvert.DeserializeObject(r.Data)).ToList();
Console.WriteLine(节点[0]。标题);

谢谢!如果我想添加更多的返回值怎么办?e、 g.
cast=Return.As(“collect([person.name,head(split(lower(type(r)),”))),r.roles])
@DorCohen你的意思是
中的那样吗?Return((x,y,z)=>new{x=x.As(),y=
等等?但这会破坏动态,有可能返回多个节点吗?比如:
.Return Return(()=>Return.As(“电影,collect([person.name,head split(lower(type(r)),“'),r.roles]));
是的,但是你能问另一个问题吗,因为我觉得它太大了,我无法在评论中写出来!新问题出现了: