使用 neo4j 客户端构建动态查询
Build a dynamic query using neo4j client
我阅读了很多关于这个主题的问题并创建了以下几乎动态的查询:
var resQuery = WebApiConfig.GraphClient.Cypher
.Match("(movie:Movie {title:{title}})")
.WithParam("title", title)
.Return(() => new {
movie = Return.As<string>("movie.title")
}).Results;
不幸的是,这不是动态的,因为我在 Return 匿名类型中声明电影 属性。
在我发现的所有示例中,唯一的选择是 return 节点作为对象匹配节点属性,
喜欢:movie = Return.As<string>("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("(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("(movie:Movie {title:{title}})")
.WithParam("title", title)
.Return(() => new {
movie = Return.As<string>("movie.title")
}).Results;
不幸的是,这不是动态的,因为我在 Return 匿名类型中声明电影 属性。
在我发现的所有示例中,唯一的选择是 return 节点作为对象匹配节点属性,
喜欢:movie = Return.As<string>("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("(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);