我读了很多关于这个主题的问题,并创建了以下几乎动态的查询:
var resQuery = WebApiConfig.GraphClient.Cypher
.Match("(movie:Movie {title:{title}})")
.WithParam("title", title)
.Return(() => new {
movie = Return.As<string>("movie.title")
}).Results;
不幸的是,这并不是动态的,因为我在Return anonymous类型中声明了movie属性。
在所有示例中,我发现唯一的选择是在对象与节点属性匹配时返回节点,
喜欢:movie = Return.As<string>("movie.title")
我希望Return语句能够返回所有节点属性的键值对列表(它可以是任何表示形式,如JSON等),因为 我的节点是通用的,而不是每次都来自特定的对象类型。
可能吗?
答案 0 :(得分:2)
您可以这样做:
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);