我有一个名为 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。如何解决这个问题呢?
相关分类