/// <summary>
 ///     获取简单表达式
 /// </summary>
 /// <param name="binaryExpression">二元表达式</param>
 /// <returns>简单表达式</returns>
 private static TmphExpression getSimpleNotEqual(TmphBinaryExpression binaryExpression)
 {
     if (binaryExpression.Left.IsConstant && binaryExpression.Right.IsConstant)
     {
         var leftValue = ((TmphConstantExpression)binaryExpression.Left).Value;
         var rightValue = ((TmphConstantExpression)binaryExpression.Right).Value;
         binaryExpression.PushPool();
         return
             TmphLogicConstantExpression.Get(leftValue == null ? rightValue != null : !leftValue.Equals(rightValue));
     }
     return binaryExpression;
 }
 /// <summary>
 ///     获取简单表达式
 /// </summary>
 /// <param name="binaryExpression">二元表达式</param>
 /// <returns>简单表达式</returns>
 private static TmphExpression getSimpleLessThanOrEqual(TmphBinaryExpression binaryExpression)
 {
     if (binaryExpression.Left.IsConstant && binaryExpression.Right.IsConstant)
     {
         var value = ((IComparable)((TmphConstantExpression)binaryExpression.Left).Value)
             .CompareTo(((TmphConstantExpression)binaryExpression.Right).Value);
         binaryExpression.PushPool();
         return TmphLogicConstantExpression.Get(value <= 0);
     }
     return binaryExpression;
 }
 /// <summary>
 ///     获取简单表达式
 /// </summary>
 /// <param name="binaryExpression">二元表达式</param>
 /// <returns>简单表达式</returns>
 private static TmphExpression getSimpleAndAlso(TmphBinaryExpression binaryExpression)
 {
     if (binaryExpression.Left.NodeType == TmphExpressionType.LogicConstant)
     {
         TmphExpression expression;
         if (((TmphLogicConstantExpression)binaryExpression.Left).Value)
         {
             expression = binaryExpression.Right;
             binaryExpression.Right = null;
         }
         else
         {
             expression = binaryExpression.Left;
             binaryExpression.Left = null;
         }
         --expression.ExpressionCount;
         binaryExpression.PushPool();
         return expression;
     }
     if (binaryExpression.Right.NodeType == TmphExpressionType.LogicConstant)
     {
         TmphExpression expression;
         if (((TmphLogicConstantExpression)binaryExpression.Right).Value)
         {
             expression = binaryExpression.Left;
             binaryExpression.Left = null;
         }
         else
         {
             expression = binaryExpression.Right;
             binaryExpression.Right = null;
         }
         --expression.ExpressionCount;
         binaryExpression.PushPool();
         return expression;
     }
     return binaryExpression;
 }
 /// <summary>
 ///     转换表达式
 /// </summary>
 /// <param name="converter">表达式转换器</param>
 /// <param name="expression">表达式</param>
 /// <param name="type">操作字符串</param>
 private void convertBinaryExpression(TmphConverter converter, TmphBinaryExpression binaryExpression, string type)
 {
     var stream = converter.Stream;
     TmphExpression left = binaryExpression.Left, right = binaryExpression.Right;
     stream.Write('(');
     if (left.IsSimple)
     {
         converters[(int)left.NodeType](converter, left);
         stream.Write('=');
         stream.Write('1');
     }
     else converters[(int)left.NodeType](converter, left);
     stream.Write(')');
     stream.WriteNotNull(type);
     stream.Write('(');
     if (right.IsSimple)
     {
         converters[(int)right.NodeType](converter, right);
         stream.Write('=');
         stream.Write('1');
     }
     else converters[(int)right.NodeType](converter, right);
     stream.Write(')');
 }
 /// <summary>
 ///     转换表达式
 /// </summary>
 /// <param name="converter">表达式转换器</param>
 /// <param name="expression">表达式</param>
 /// <param name="char1">操作字符1</param>
 /// <param name="char2">操作字符2</param>
 protected void convertBinaryExpression(TmphConverter converter, TmphBinaryExpression binaryExpression,
     char char1, char char2 = ' ')
 {
     var stream = converter.Stream;
     TmphExpression left = binaryExpression.Left, right = binaryExpression.Right;
     if (left.IsSimple)
     {
         converters[(int)left.NodeType](converter, left);
     }
     else
     {
         stream.Write('(');
         converters[(int)left.NodeType](converter, left);
         stream.Write(')');
     }
     stream.Write(char1);
     stream.Write(char2);
     if (right.IsSimple)
     {
         converters[(int)right.NodeType](converter, right);
     }
     else
     {
         stream.Write('(');
         converters[(int)right.NodeType](converter, right);
         stream.Write(')');
     }
 }
 /// <summary>
 ///     转换表达式
 /// </summary>
 /// <param name="converter">表达式转换器</param>
 /// <param name="expression">表达式</param>
 protected virtual void convertNotEqual(TmphConverter converter, TmphBinaryExpression expression)
 {
     convertBinaryExpression(converter, expression, '<', '>');
 }
 /// <summary>
 ///     转换表达式
 /// </summary>
 /// <param name="converter">表达式转换器</param>
 /// <param name="expression">表达式</param>
 protected override void convertNotEqual(Expression.TmphConverter converter, TmphBinaryExpression expression)
 {
     convertBinaryExpression(converter, expression, '!', '=');
 }