Neo4J C#如何接收不同类型的节点并使用它们

时间:2018-03-14 08:26:42

标签: c# neo4j neo4jclient

让我们说例如我有3种类型的节点TypeA TypeB TypeC 并且所有类型都继承自Parent类型,其中包含我的节点的基本信息, 我有这样的查询例如:

var graphResult = graphClient.Cypher
    .Unwind(Nodes, "singleNode")
    .Match("p = (innerNode:TypeA{Id:singleNode.Id}) -[r:CONTAINS {solutionId:{innerSolutionId}}] - ()")
            .WithParam("innerSolutionId", solutionId)
            .Return(p => new
                   {
                      Nodes = Neo4jClient.Cypher.Return.As<IEnumerable<Neo4JNodeDSO>>("nodes(p)"),
                      Relationships = Neo4jClient.Cypher.Return.As<IEnumerable<Neo4JLinkDSO>>("rels(p)")
                   }).Results;

我返回的节点来自Parent类型,并且不包含子类型的所有数据,有没有办法在接收数据时如何分配我将具有属于TypeA / TypeB的属性/ TypeC?那不在父对象中? (一种接收每个节点的整个数据的方法,而不仅仅是将它反序列化为父类型?)

非常感谢先进。

1 个答案:

答案 0 :(得分:0)

不是特定的type - 您可以将其作为dynamic获取,但从长远来看,您仍然需要知道该类型,这个答案:Returning multi value in dynamic query using neo4j client可能会有所帮助,因为您可以尝试它是动态的 - (参见最后的&#39;代码部分&#39;)。