2013-04-25 108 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

相關問題