2013-04-25 110 views

回答

11

肯定的:

static Expression<Func<TModel,TProperty>> CreateExpression<TModel,TProperty>(
    string propertyName) 
{ 
    var param = Expression.Parameter(typeof(TModel), "x"); 
    return Expression.Lambda<Func<TModel, TProperty>>(
     Expression.PropertyOrField(param, propertyName), param); 
} 

则:

var lambda = CreateExpression<SomeModel, bool>("IsAlive"); 
+2

没有! Marc Gravell不应该在这里!这是Jon Skeet的问题! – 2013-04-25 14:30:41

+0

非常感谢!简单而有效! – Anelook 2013-04-25 15:23:55

+0

我有另一个连接的问题 - 如果我在我的视图中有一个更复杂的属性,一个类的实例会怎么样。所以不只是一个简单的属性是String或者Boolean,而是一个内部拥有更多属性的对象。例如,这就是我如何为这样的“内部”属性'@ Html.CheckBoxFor(m => m.Config.All)'声明简单的复选框。是否有可能创建这样的lambda,它将反映对象内的属性 - “m => m.Config.All”。 – Anelook 2013-04-26 06:50:53

相关问题