Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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
Neo4j 从cypher查询返回泛型类型_Neo4j_Neo4jclient - Fatal编程技术网

Neo4j 从cypher查询返回泛型类型

Neo4j 从cypher查询返回泛型类型,neo4j,neo4jclient,Neo4j,Neo4jclient,我正在创建一个asp.net web api。许多路由都执行相同的操作,只是使用不同的节点对象。我想从BaseRepository类创建一个基本模型,并简单地让子类强制转换并返回对象 比如说。获取api/{controller} 在这个cypher查询中唯一改变的是节点的标签,它很容易作为参数提供 我尝试了很多很多方法,比如 var query = client .Cypher .Match(string.Format("(node:{0})",

我正在创建一个asp.net web api。许多路由都执行相同的操作,只是使用不同的节点对象。我想从BaseRepository类创建一个基本模型,并简单地让子类强制转换并返回对象

比如说。获取api/{controller} 在这个cypher查询中唯一改变的是节点的标签,它很容易作为参数提供

我尝试了很多很多方法,比如

var query = client
            .Cypher
            .Match(string.Format("(node:{0})", label))
            .Return(node => node.As<Node<object.GetType()>>())
            .Limit(10)
            .Results;
var query=client
塞弗先生
.Match(string.Format(“(节点:{0})”,标签))
.Return(node=>node.As())
.限额(10)
后果
但lambda不会接受这一点。我试过了

.Return(node => node.As<Node<string>>())
.Return(node=>node.As())
并将其转换为对象类型和动态,但它说我也不能这样做

有没有其他方法可以完成我在这里尝试的工作,或者可以建议另一种方法,这样我就不必以完全相同的方式编写几十个GET-api/{controller}方法


谢谢

我在一些解决方案中采用了类似的方法,使用泛型。您的类型与标签匹配吗?如果是这样的话,我想知道这种方法是否能解决您的问题

public T GetNode<T>(Guid nodeId)
{
    // derive the label from the type name
    var label = typeof(T).Name;
    // now build the query
    var query = client.Cypher
        .Match(string.Concat("(node:", label, " { nodeid : {nodeid} })"))
        .WithParams(new { nodeid = nodeId })
        .Return(node => node.As<T>())
        .Limit(10)
        .Results;

    // now do something with the results
}
public T GetNode(Guid nodeId)
{
//从类型名派生标签
var label=类型(T).名称;
//现在构建查询
var query=client.Cypher
.Match(string.Concat(((节点:,标签,{nodeid:{nodeid}}]))
.WithParams(新的{nodeid=nodeid})
.Return(node=>node.As())
.限额(10)
后果
//现在对结果做点什么
}
显然,这是使用模式索引来搜索特定节点,但您可以省略该部分,例如

    // derive the label from the type name
    var label = typeof(T).Name;
    // now build the query
    var query = client.Cypher
        .Match(string.Concat("(node:", label, ")"))
        .Return(node => node.As<T>())
        .Limit(10)
        .Results;

    // now do something with the results
//从类型名派生标签
var label=类型(T).名称;
//现在构建查询
var query=client.Cypher
.Match(string.Concat(“(节点:”,标签“)”)
.Return(node=>node.As())
.限额(10)
后果
//现在对结果做点什么
这方面有什么进展吗?

你是最棒的男人(或女人),效果非常好!我真是太感谢你了!