表达式树中的嵌套属性

时间:2012-11-28 20:16:51

标签: .net c#-4.0 lambda expression-trees

我想编写一个表达式来检索属性中的属性。我的2个课程:

public class BusinessType
{
    public string Proprietor
    {
        get { return "Proprietor"; }
    }
}

public class VendorApplicationViewModel
{
    public List<BusinessType> BusinessClassification { get; set; }
}

public static IHtmlString RadioListForIEnum<TModel, TProperty>(this HtmlHelper<TModel> htmlhelper, 
                                                               Expression<Func<TModel, TProperty>> expression)
{
    var prop = ModelMetadata.FromLambdaExpression(expression, htmlhelper.ViewData);
    //Func<TModel2, TProperty2> nestedProperty = 
    return null;
}

我很遗憾我是如何做到这一点的。此外,我对表达树很新,任何有关教程的好建议都会受到高度赞赏。感谢

1 个答案:

答案 0 :(得分:1)

我认为你只是想在房产内找到一处房产。

您可以拥有以下内容。

 Expression<Func<VendorApplicationViewModel, string>> lambda1 = model => model.BusinessClassification[0].Proprietor;

可以在代码中重新创建

 ParameterExpression param = Expression.Parameter(typeof(VendorApplicationViewModel));
 Expression<Func<VendorApplicationViewModel, string>> lambda2 = Expression.Lambda<>(
      Expression.Property(
           Expression.Property(
                param,
                "BusinessClassification",
                Expression.Constant(0)
           ),
           "Proprietor"
      ),
      param
 );