public static Expression<Func<T,bool>> GetSearchExpression<T>(string SearchString)
{
Expression<Func<T,bool>> filter = null;
if (string.IsNullOrEmpty(SearchString)) return null;
var left = Expression.Parameter(typeof(T),"m");
Expression expression = Expression.Constant(false);
T obj = default(T);
var type = typeof(T);
obj = (T)Activator.CreateInstance(type);
var propertyInfos = type.GetProperties();
foreach (var propertyInfo in propertyInfos)
{
if (propertyInfo.Name.ToLower() == "id" || propertyInfo.PropertyType == typeof(DateTime)) continue;
Expression tostring = Expression.Call
(
Expression.Property(left,typeof(T).GetProperty(propertyInfo.Name).Name),
typeof(object).GetMethod("ToString",new Type[] { })
);
Expression right = Expression.Call
(
tostring,
typeof(string).GetMethod("Contains",new Type[] { typeof(string) }),
Expression.Constant(SearchString)
);
expression = Expression.Or(right,expression);
}
filter = Expression.Lambda<Func<T,bool>>(expression,new[] { left });
return filter;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。