Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 返回一个节点和它';使用Neo4jClient将关系和连接的节点合并到一个具体的类中_C#_Asp.net_Neo4j_Cypher_Neo4jclient - Fatal编程技术网

C# 返回一个节点和它';使用Neo4jClient将关系和连接的节点合并到一个具体的类中

C# 返回一个节点和它';使用Neo4jClient将关系和连接的节点合并到一个具体的类中,c#,asp.net,neo4j,cypher,neo4jclient,C#,Asp.net,Neo4j,Cypher,Neo4jclient,我正在尝试将.Net中的Neo4j与Neo4jClient一起使用。我试图找到填充以下具体C#类的最佳方法: 也适用于其他关系类型,例如已婚 我目前有以下查询,我想获得一个特定的person节点,以及它的关系(即相关的person节点和关系类型的字符串,可以是关系类型或关系的值),填充PersonData。我目前可以很容易地填充Person,但我不知道如何填充关系 var data = client.Cypher .Match("(p:Person)-[r*1..1]-&

我正在尝试将.Net中的Neo4j与Neo4jClient一起使用。我试图找到填充以下具体C#类的最佳方法:

也适用于其他关系类型,例如已婚

我目前有以下查询,我想获得一个特定的person节点,以及它的关系(即相关的person节点和关系类型的字符串,可以是关系类型或关系的值),填充PersonData。我目前可以很容易地填充Person,但我不知道如何填充关系

var data = client.Cypher
            .Match("(p:Person)-[r*1..1]->(per:Person)")
            .Where((Person p) => p.Id == 3)
            .Return((p, per) => new PersonData
            {
                Person = p.As<Person>()
            })
            .Results;
var data=client.Cypher
.Match(“(p:Person)-[r*1..1]->(per:Person)”)
.其中((人员p)=>p.Id==3)
.Return((p,per)=>新个人数据
{
Person=p.As()
})
.结果;
这个PersonData的填充是我必须在查询之外做的事情,还是可以在return语句中完成

我还有一个问题,这个查询返回id为3的节点两次,我不知道为什么


非常感谢。

这适用于您的类-只要您从
List
更改为
IEnumerable

var query = gc.Cypher.Match("(p:Person {Id:2})")
        .OptionalMatch("(p)-[r]->(p2:Person)")
        .With("p, {Relationship: type(r), Relative: p2} as relations")
        .Return((p, relations) => new PersonData
        {
            Person = p.As<Person>(),
            Relations = relations.CollectAs<Relation>()
        });
var query=gc.Cypher.Match(((p:Person{Id:2})”)
.OptionalMatch(“(p)-[r]->(p2:Person)”)
.With(“p,{Relationship:type(r),Relative:p2}as relations”)
.Return((p,relations)=>newpersondata
{
Person=p.As(),
Relations=Relations.CollectAs()
});

谢谢@Chris,很高兴在Graph Connect看到你:)
var data = client.Cypher
            .Match("(p:Person)-[r*1..1]->(per:Person)")
            .Where((Person p) => p.Id == 3)
            .Return((p, per) => new PersonData
            {
                Person = p.As<Person>()
            })
            .Results;
var query = gc.Cypher.Match("(p:Person {Id:2})")
        .OptionalMatch("(p)-[r]->(p2:Person)")
        .With("p, {Relationship: type(r), Relative: p2} as relations")
        .Return((p, relations) => new PersonData
        {
            Person = p.As<Person>(),
            Relations = relations.CollectAs<Relation>()
        });