使用反射获取 Lambda 表达式中的属性值

我有一个名为 SearchDetails 的对象,其中包含:


SearchDetails: 

{ ColName: "StrName"

  SearchVal" "mega" }

我正在使用反射方法制作通用的 lambda 表达式。


    public dynamic searchMethod(object SearchDetails)

    {

        ParameterExpression Parameter = Expression.Parameter(typeof(SearchDetails), "x");


        var searchCol = Expression.Property(

         Parameter,

         SearchDetails.GetType().GetProperty("ColName")


       );

        var colVal = Expression.Property(

          Parameter,

          SearchDetails.GetType().GetProperty("SearchValue").Name

        );


       Expression contMethod = Expression.Call(searchCol, "Contains", null, colVal);

        Expression<Func<SearchDetails, bool>> lambda =

           Expression.Lambda<Func<SearchDetails, bool>>(contMethod, Parameter);


        return lambda;

    }

问题是我得到的 lambda 表达式如下:


{x => x.ColName.Contains(x.SearchValue)}

但是,我希望它是这样的:{x => x.StrName.Contains("megabrand")}. 我无法访问属性的值:ColName 和 SearchValue。如何解决这个问题呢?


杨__羊羊
浏览 261回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP