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,常量),参数);