• 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;
            }
  • 相关阅读:
    JavaWeb-ajax
    数据库-条件查询和分页
    JSP-EL和JSTL
    ROS的STM32电机驱动
    rosserial_python serial_node.py分析--补遗
    rosserial_python serial_node.py分析
    Python的matplotlib绘图
    kNN算法与python
    利用网售的PID调制工具配置电机PID参数
    mbed的ticker问题
  • 原文地址:https://www.cnblogs.com/hotss/p/3564972.html
Copyright © 2020-2023  润新知