父导航属性的C#表达式树参数

时间:2009-02-11 15:20:40

标签: c# entity-framework lambda expression-trees

如何为1到*导航属性的父级创建ParameterExpression?

以下适用于子实体:

var parameter = Expression.Parameter(
    typeof(T), // where T is the entity type
    GetParameterName()); // helper method to get alias

在TParent上尝试类似的东西会产生一个源自Context的查询,而不是作为孩子的属性。

lambda等价物是这样的:

var q = from f in context.Foo 
        where f.Bar.BarId == 1...
         // where bar is the Navigation Property to the parent

为了清晰起见进行编辑:

我使用以下命令从属性创建成员表达式:

Expression exp = Expression.Equal(
    Expression.Property(parameter, "SomeColumn"),
    Expression.Constant("SomeValue"));

因此,在这种情况下,我应该使用MemberExpression而不是ParameterExpression。

1 个答案:

答案 0 :(得分:1)

我有点困惑......“。棒”不是一个ParameterExpression - 它是MemberExpressionf是参数。你究竟想做什么?

请注意,一个选项是将示例代码加载到反射器中,转换.NET 3.5提示,并阅读它是如何做的 - 它看起来像代码here,但通常很容易跟随。