Esempio n. 1
0
 protected override Expression VisitMember(MemberExpression memberExp)
 {
     if (memberExp.Expression != null && memberExp.Expression.NodeType == ExpressionType.Parameter)
     {
         var    typeName  = memberExp.Expression.Type.Name;
         string fieldName = GetFieldName(typeName, memberExp.Member.Name);
         if (!string.IsNullOrEmpty(Alias))
         {
             fieldName = Alias + "." + GetFieldName(typeName, memberExp.Member.Name);
         }
         OrderByFields.Append(string.Format("{0} {1},", fieldName, OrderBy));
         return(memberExp);
     }
     else if (memberExp.NodeType == ExpressionType.MemberAccess)
     {
         object result = Expression.Lambda(memberExp).Compile().DynamicInvoke();
         var    r      = Expression.Constant(result, result.GetType());
         this.Visit(r);
         return(r);
     }
     throw new NotSupportedException(string.Format("成员 '{0}’不支持", memberExp.Member.Name));
 }