Neo4j 从cypher查询返回泛型类型
我正在创建一个asp.net web api。许多路由都执行相同的操作,只是使用不同的节点对象。我想从BaseRepository类创建一个基本模型,并简单地让子类强制转换并返回对象 比如说。获取api/{controller} 在这个cypher查询中唯一改变的是节点的标签,它很容易作为参数提供 我尝试了很多很多方法,比如Neo4j 从cypher查询返回泛型类型,neo4j,neo4jclient,Neo4j,Neo4jclient,我正在创建一个asp.net web api。许多路由都执行相同的操作,只是使用不同的节点对象。我想从BaseRepository类创建一个基本模型,并简单地让子类强制转换并返回对象 比如说。获取api/{controller} 在这个cypher查询中唯一改变的是节点的标签,它很容易作为参数提供 我尝试了很多很多方法,比如 var query = client .Cypher .Match(string.Format("(node:{0})",
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)
后果
//现在对结果做点什么
这方面有什么进展吗?你是最棒的男人(或女人),效果非常好!我真是太感谢你了!