为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
杨__羊羊 2021-09-19 16:17:51
我有一个名为 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。如何解决这个问题呢?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 260 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信