c#反射表达式树模糊搜索示例
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;
}
您可能感兴趣的文章:
- c#中,利用反射机制的两个示例
- c#使用反射调用类型成员示例
- C#反射示例代码
- .NET/C#利用反射调用含ref或out参数的方法示例代码
- 反射DLL示例 C#
- C#使用Lucene建索引和搜索代码示例
- C#中ComboBox的模糊搜索
- C#反射的简单示例
- asp.net(c#)中使用反射动态加载dll简单示例
- c#使用Lucene.net创建索引,实现搜索的代码示例
- C#用ComboBox实现模糊搜索 解决各种细节问题
- c#反射调用方法示例
- C# 反射与dynamic最佳组合示例代码
- c#反射优化 表达式树
- c#测试反射性能示例
- C#反射示例
- C#反射方法示例
- C#使用dir命令实现文件搜索功能示例
- C#中ComboBox的模糊搜索
- .Net/C#控制台应用程序实现磁盘目录文件搜索的工具类 【本示例简体转繁体】