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

时间:2022-01-09 07:03:31 


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#,反射,表达式树,模糊搜索
0
投稿

猜你喜欢

  • 功能强大的TraceId 搭配 ELK使用详解

    2021-09-16 02:26:43
  • 如何在Spring Boot应用中优雅的使用Date和LocalDateTime的教程详解

    2023-03-14 04:54:11
  • Handler与Android多线程详解

    2022-04-26 18:23:10
  • 浅析Java随机数与定时器

    2022-06-04 16:21:10
  • C# 关于LoadLibrary的疑问详解

    2023-07-26 23:14:10
  • java统计字符串中指定元素出现次数方法

    2022-11-02 16:05:40
  • java直接插入排序示例

    2021-09-27 15:53:35
  • C#使用iTextSharp从PDF文档获取内容的方法

    2021-06-12 04:01:11
  • springboot 无法自动装配的问题

    2021-05-29 06:14:30
  • flutter轮子计划之进度条

    2023-06-21 07:59:39
  • java使用正则表达校验手机号码示例(手机号码正则)

    2022-04-07 20:37:04
  • 详解Android封装一个全局的BaseActivity

    2022-09-16 07:05:23
  • C# WinForm制作登录界面的实现步骤

    2022-09-06 18:32:54
  • java中如何判断JSONObject是否存在某个Key

    2022-06-10 15:07:24
  • Android键盘输入语言设置默认打开myanmar缅甸语的步骤

    2021-07-01 17:15:44
  • Android使用元数据实现配置信息的传递方法详细介绍

    2023-11-02 15:25:48
  • 详解Java消息队列-Spring整合ActiveMq

    2022-12-31 04:15:41
  • Java动态代理分析及理解

    2021-10-21 14:59:58
  • SpringBoot整合Apollo配置中心快速使用详解

    2022-12-25 17:00:34
  • Android自定义Notification添加点击事件

    2022-04-06 19:06:30
  • asp之家 软件编程 m.aspxhome.com