如何从表达式树中获取属性名称?

时间:2017-01-21 15:08:03

标签: c# linq expression-trees

我的方法是

    public Task<Product> GetProduct(int productId, params Expression<Func<Product, object>>[] properties)
    {

      var member = properties[0].Body as MemberExpression;
      var v = member.Member.Name;

    }

我可以使用适当的索引

获得单个属性名称
 var member = properties[0].Body as MemberExpression;
 var v = member.Member.Name;

但这不是我想要的。 我很想得到所有的属性名称和string.join他们与linq。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

使用as运算符,然后过滤非属性的运算符。如果使用强制转换,它将抛出异常,但as将返回null。

var all =     
string.Join(", ", properties
.Select(x =>
    x.Body as MemberExpression))
.Where(x => x != null)
.Select(x =>
    x.Member.Name));