我知道我可以编写以下内容来生成lambda表达式:
Expression<Func<string, bool>> lambda = s => s.Length == 5;
但有没有办法自动为属性生成表达式?换句话说就是强烈类型的类比:
var property = Expression.Property("Name")
答案 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;