/// <summary> /// 转换表达式 /// </summary> /// <param name="converter">表达式转换器</param> /// <param name="expression">表达式</param> private void convertInSet(sql.expression.converter converter, Expression expression) { charStream stream = converter.Stream; BinaryExpression binaryExpression = (BinaryExpression)expression; Expression left = binaryExpression.Left; converters[(int)left.NodeType](converter, left); stream.Write(" In("); func <object, string> toString = null; int index = -1; foreach (object value in (IEnumerable)((ConstantExpression)binaryExpression.Right).Value) { if (++index == 0) { toString = constantConverter.Default[value.GetType()]; } else { stream.Write(','); } stream.Write(toString != null ? toString(value) : constantConverter.convertConstantStringMssql(value.ToString())); } stream.Write(')'); }
/// <summary> /// 转换表达式 /// </summary> /// <param name="converter">表达式转换器</param> /// <param name="expression">表达式</param> private void convertInSet(sql.expression.converter converter, Expression expression) { charStream stream = converter.Stream; BinaryExpression binaryExpression = (BinaryExpression)expression; Expression left = binaryExpression.Left; converters[(int)left.NodeType](converter, left); stream.SimpleWriteNotNull(" In("); Action <charStream, object> toString = null; int index = -1; foreach (object value in (IEnumerable)((ConstantExpression)binaryExpression.Right).Value) { if (++index == 0) { toString = constantConverter[value.GetType()]; } else { stream.Write(','); } if (toString == null) { stringConverter(stream, value.ToString()); } else { toString(stream, value); } } stream.Write(')'); }
/// <summary> /// 转换表达式 /// </summary> /// <param name="converter">表达式转换器</param> /// <param name="expression">表达式</param> private void convertConstant(sql.expression.converter converter, Expression expression) { object value = ((ConstantExpression)expression).Value; if (value != null) { func <object, string> toString = constantConverter.Default[value.GetType()]; if (toString != null) { converter.Stream.Write(toString(value)); } else { converter.Stream.Write(constantConverter.convertConstantStringMssql(value.ToString())); } } else { converter.Stream.Write("null"); } }
/// <summary> /// 转换表达式 /// </summary> /// <param name="converter">表达式转换器</param> /// <param name="expression">表达式</param> private void convertConstant(sql.expression.converter converter, Expression expression) { object value = ((ConstantExpression)expression).Value; if (value != null) { Action <charStream, object> toString = constantConverter[value.GetType()]; if (toString != null) { toString(converter.Stream, value); } else { stringConverter(converter.Stream, value.ToString()); } } else { fastCSharp.web.ajax.WriteNull(converter.Stream); } }