我想創建一個只知道字段名稱的MemberExpression;例如:Dynamic MemberExpression
public static Expression<Func<TModel, T>> GenerateMemberExpression<TModel, T>(string fieldName)
{
PropertyInfo fieldPropertyInfo;
fieldPropertyInfo = typeof(TModel).GetProperty(fieldName);
var entityParam = Expression.Parameter(typeof(TModel), "e"); // {e}
var columnExpr = Expression.MakeMemberAccess(entityParam, fieldPropertyInfo); // {e.fieldName}
var lambda = Expression.Lambda(columnExpr, entityParam) as Expression<Func<TModel, T>>; // {e => e.column}
return lambda;
}
上面的問題是,字段類型必須是強類型。傳遞「對象」作爲字段類型不起作用。有什麼辦法可以產生這個?即使動態LINQ似乎不起作用。
謝謝@Ani。幫助了我很多。對於我自己的代碼,我還添加了一個採用propertyInfo而不是propertyName的方法。 – Mithon 2013-03-14 09:43:59
非常感謝!你的代碼示例幫助我理解了表達式的構建,並允許我做我想做的事:D – Shautieh 2013-07-02 13:28:29