C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > c#反射

c#反射表达式树模糊搜索示例

作者:

这篇文章主要介绍了c#反射表达式树模糊搜索示例,反射实体T,非datetime字段反射获取表达式树,需要的朋友可以参考下

复制代码 代码如下:

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;

        }

您可能感兴趣的文章:
阅读全文