使用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]));
是的,但是你能问另一个问题吗,因为我觉得它太大了,我无法在评论中写出来!新问题出现了: