C# 如何构建memberexpression的memberexpression?

C# 如何构建memberexpression的memberexpression?,c#,linq-expressions,C#,Linq Expressions,以下是我的课程: public class A { public int i { get; set; } } public class B { public A a { get; set; } public int j { get; set; } } 如果我想用expression来表示b.j>3,我可以这样做: ParameterExpression parameter = Expression.Parameter(typeof(B), "b"); MemberEx

以下是我的课程:

public class A
{
    public int i { get; set; }
}

public class B
{
    public A a { get; set; }
    public int j { get; set; }
}
如果我想用expression来表示
b.j>3
,我可以这样做:

ParameterExpression parameter = Expression.Parameter(typeof(B), "b");
MemberExpression member = Expression.PropertyOrField(parameter, "j");            
ConstantExpression constant = Expression.Constant(3);
return Expression.Lambda<Func<B, bool>>(Expression.GreaterThan(member, constant), parameter);
ParameterExpression参数=表达式参数(类型为(B),“B”);
MemberExpression member=Expression.PropertyOrField(参数“j”);
恒常压力常数=表达式常数(3);
返回表达式.Lambda(表达式.GreaterThan(成员,常量),参数);

现在,我如何为
b.a.I>3
构建表达式?

只需在前一个表达式的基础上创建另一个
MemberExpression

ParameterExpression parameter = Expression.Parameter(typeof(B), "b");
MemberExpression memberA = Expression.PropertyOrField(parameter, "a");

// Use the previous MemberExpression here:
MemberExpression memberI = Expression.PropertyOrField(memberA, "i");

ConstantExpression constant = Expression.Constant(3);
return Expression.Lambda<Func<B, bool>>(Expression.GreaterThan(memberI, constant), parameter);
ParameterExpression参数=表达式参数(类型为(B),“B”);
MemberExpression memberA=Expression.PropertyOrField(参数“a”);
//在此处使用上一个MemberExpression:
MemberExpression memberI=Expression.PropertyOrField(memberA,“i”);
恒常压力常数=表达式常数(3);
返回表达式.Lambda(表达式.GreaterThan(memberI,常量),参数);