使用linq的运行时类型

时间:2014-12-17 22:55:02

标签: c# linq generics neo4j neo4jclient

我正在使用Readify Neo4jClient对neo4j图形数据库进行密码查询。

在某些时候,我想像这样对数据库进行查询:

var results = Client.Cypher
                 .Match("(entity:" + myEntityType1 + ") -[:" + myRelationshipType + "]- (entity2:" + myEntityType2 + ")")
                 .Where((Entity entity) => entity.Id == pEntity.Id)
                 .Return(entity2 => entity2.As<runtimeType>())
                 .Results;

在编译时,我没有关于查询将加载的类型的信息。我想从db加载的类型仅在运行时已知。有没有办法让linq表达式(赋予Return() - 函数)采用运行时类型而不是硬编码类型?

运行时类型将由PropertyInfo对象提供。

编辑

对不起我错过了一些重要的信息:

运行时类型将是一种继承自编译时已知类型的类型。 将该已知类型赋予linq表达式将给出结果。但是,当然,此结果将仅包含继承类型中声明的字段。

1 个答案:

答案 0 :(得分:1)

答案基本上是,不,原因很简单,“接下来你打算怎么做?”

最终,您必须存储一个编译时类型变量(意味着您真的知道该类型是什么,您只是没有意识到它),或者您必须将其存储在{{1}中无论如何,它的大部分时间都是如此,所以你可能会从现在开始。