我有表达
{e => Convert(e.sal1)}
我想从中得到sal1。不是sal1的值。
如果我转换成员表达式中的表达式,它会给我null。
答案 0 :(得分:0)
那是因为你有一个MemberExpression(sal1属性),包含在一个UnaryExpression(转换调用)中,包含在一个LambdaExpression中(' e => ...' )
获得" sal1"是:
((MemberExpression)
((UnaryExpression)
((LambdaExpression)exp).Body).Operand).Member.Name
如果你想更灵活地写这个,那么你可以去一个ExpressionVisitor:
string lastMemberName = new MyVisitor().GetLastVisitedMember(exp);
class MyVisitor : ExpressionVisitor
{
private string memberName = "";
public string GetLastVisitedMember(Expression exp)
{
Visit(exp);
return memberName;
}
protected override Expression VisitMember(MemberExpression node)
{
memberName = node.Member.Name;
return base.VisitMember(node);
}
}