下面的表达式生成器工作正常。如果subMember
是字符串则没问题。
想象一下,现在我收到一个subMember
命名Code
,这Code
是一个Int32
。在这方面,我想制作一个StartWith
,但我无法解析,因为它是一个Int32
. 我想,我必须转换为字符串。我该如何实施?
例如:100、102、105、200、300、301、3011 ...
如果 subMember = "10",则结果为 100,102,105
如果 subMember = "30",则结果为 300,301,3011
如果 subMember = "301",则结果为 301,3011
private static Expression<Func<T, bool>> BuildPredicate<T>(string member, object value)
{
var p = Expression.Parameter(typeof(T));
Expression body = p;
foreach (var subMember in member.Split('.'))
{
body = Expression.PropertyOrField(body, subMember);
}
return Expression.Lambda<Func<T, bool>>(
Expression.Equal(body, Expression.Constant(value, body.Type)), p);
}