• 获取属性名:PropertyNameHelper


    获取属性名:PropertyNameHelper

    namespace NCS.Infrastructure.Querying
    {
        public static class PropertyNameHelper
        {
            public static string ResolvePropertyName<T>(Expression<Func<T, object>> expression)
            {
                var expr = expression.Body as MemberExpression;
                if (expr == null)
                {
                    var u = expression.Body as UnaryExpression;
                    expr = u.Operand as MemberExpression;
                }
    
                return expr.ToString().Substring(expr.ToString().IndexOf(".") + 1);
            }
    
            public static string ResolvePropertyName<T>(Expression<Func<T>> expression)
            {
                var expr = expression.Body as MemberExpression;
                if (expr == null)
                {
                    var u = expression.Body as UnaryExpression;
                    expr = u.Operand as MemberExpression;
                }
    
                return expr.ToString().Substring(expr.ToString().IndexOf(".") + 1);
            }
        }
    }

    使用:

            /// <summary>
            /// 创建Criterion对象,示例1:
            /// Criterion.Create<Product>(p=>p.Color.Id, id, CriteriaOperator.Equal);
            /// 
            /// 示例2:类对象中的另一个类对象的属性创建Criterion,
            /// 例如DataPoint的一个属性ModuleBelongTo的类型是Module,而Module有int类型的Id属性,
            /// 即类的结构如下:
            /// DataPoint datapoint = new DataPoint();
            /// datapoint.ModuleBelongTo = new Module();
            /// 
            /// 用datapoint.ModuleBelongTo.Id创建Criterion
            /// Criterion.Create<DataPoint>(p => p.ModuleBelongTo.Id, 2, CriteriaOperator.Equal)
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="expression"></param>
            /// <param name="value"></param>
            /// <param name="criteriaOperator"></param>
            /// <returns></returns>
            public static Criterion Create<T>(Expression<Func<T, object>> expression, object value, CriteriaOperator criteriaOperator)
            {
                string propertyName = PropertyNameHelper.ResolvePropertyName<T>(expression);
                Criterion criterion = new Criterion(propertyName, value, criteriaOperator);
    
                return criterion;
            }
                    query.AddCriterion(Criterion.Create<DataPointHistoryData>(p => p.DataPoint.Id, request.DataPointId, CriteriaOperator.Equal));
  • 相关阅读:
    js中url跳转问题
    代码走查整理总结
    关于前后端分离跨域请求问题
    mysql大小写敏感问题
    初识react
    mysql测试
    关于使用Ajax请求json数据,@RequestMapping返回中文乱码的几种解决办法
    ssm实现分页查询
    js表单验证处理和childNodes 和children 的区别
    javaScript数组操作整理
  • 原文地址:https://www.cnblogs.com/easy5weikai/p/3230134.html
Copyright © 2020-2023  润新知