包含整数的搜索包含谓词子句。
我生成了如下的linq表达式
如果该字段是字符串字段,则可以正常工作。
{f => (True AndAlso f.MyStringField.Contains("987"))}
但是当我将其转换为字符串时,这不起作用。例如,我有一个整数字段,例如myIntField。
{f => (True AndAlso f.XYZ.myIntField.ToString().Contains("160"))}
我添加了用于获取查询的代码。似乎某些toString()在某个地方被覆盖,
if (propr.Type == typeof(string))
{
var body = Expression.Call(propr, method, value);
var lambda = Expression.Lambda<Func<T, bool>>(body, param);
predicate = predicate.And(lambda);
}
else
{
MethodInfo toStringMethod = typeof(object).GetMethod("ToString" );
MethodInfo methodinfo = typeof(string).GetMethod("Contains", new Type[] { });
value = Expression.Constant(property.Value);
var memberToStringBody = Expression.Call(propr, toStringMethod);
var body = Expression.Call(memberToStringBody, methodinfo, value);
var lambda = Expression.Lambda<Func<T, bool>>(body, param);
predicate = predicate.And(lambda);
}