财产的隐含表达

时间:2011-07-18 07:55:46

标签: c# expression-trees

我知道我可以编写以下内容来生成lambda表达式:

Expression<Func<string, bool>> lambda = s => s.Length == 5;

但有没有办法自动为属性生成表达式?换句话说就是强烈类型的类比:

var property = Expression.Property("Name") 

2 个答案:

答案 0 :(得分:3)

这将为您提供一个返回Length属性的lambda:

Expression<Func<string, int>> lambda = s => s.Length;

如果您不想要完整的lambda,只需要访问该属性的MemberExpression,那么您可以这样做:

var propertyExpression = (MemberExpression)lambda.Body;

答案 1 :(得分:1)

Expressions<Func<ClassWithProperty, PropertyReturnType>> lambda = C => C.Name;