手机
当前位置:查字典教程网 >编程开发 >C#教程 >c#反射表达式树模糊搜索示例
c#反射表达式树模糊搜索示例
摘要:复制代码代码如下:publicstaticExpressionGetSearchExpression(stringSearchString)...

复制代码 代码如下:

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#构造初始化的顺序浅析

C#难点逐个击破(5):类的访问类型

c# 获取数据库中所有表名称的方法

c#实现输出本月的月历

基于C#中XmlWriter写入Xml的深入分析

c#中返回文章发表的时间差的示例

C#设计模式之外观模式介绍

用C#写的ADSL拨号程序的代码示例

二叉树的遍历算法(详细示例分析)

精品推荐
分类导航