复制代码 代码如下:
public static expression
{
expression
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
return filter;
}



