protected virtual void ExpressionParse(UnaryExpression expression) { if (!(expression.Operand is MemberExpression)) { ExpressionParse(expression.Operand); return; } var member = new MemberInfoEx(((MemberExpression)expression.Operand).Member); switch (expression.NodeType) { case ExpressionType.Not: Params.Add(ConstSet.True); sb.Append(CloumnName(member.Name) + " " + ConstSet.Eq + " " + ConstSet.ParamChar); break; case ExpressionType.NotEqual: Params.Add(ConstSet.False); sb.Append(CloumnName(member.Name) + " " + ConstSet.Eq + " " + ConstSet.ParamChar); break; case ExpressionType.Convert: Params.Add(member.GetValue(null)); sb.Append(ConstSet.ParamChar); break; default: sb.Append(CloumnName(member.Name)); break; } }
protected object GetMemberExpressionValue(MemberExpression expression) { var member = new MemberInfoEx(expression.Member); var exp = expression.Expression; if (exp is ConstantExpression) { return(member.GetValue(((ConstantExpression)exp).Value)); } else if (exp == null) { return(member.GetValue(null)); } else if (exp is MemberExpression) { return(member.GetValue(GetMemberExpressionValue((MemberExpression)exp))); } return(null); }