2011-03-21 45 views
2

生成表达式树我想要生成LambdaExpression像这样的语句:为子属性测试

Adress (p => p.Person.Name == "Mike") 

其中Person是有名称属性的类。

我无法通过Expression.Property实现此目的。

任何想法?

+0

你应该告诉你已经试过* *的代码。 – Gabe 2011-03-21 14:19:10

回答

2

假设P的是PersonContainer类型:

// p => p.Person.Name == "Mike" 
ParameterExpression par = Expression.Parameter(typeof(PersonContainer), "p"); 
BinaryExpression beEq = Expression.Equal(
    Expression.Property(
     Expression.Property(par, "Person"), 
     "Name"), 
    Expression.Constant("Mike")); 

Expression<Func<PersonContainer, bool>> expr = Expression.Lambda<Func<PersonContainer, bool>>(beEq, par);