static void AppendAggregateFunction(SqlGenerator generator, DbExpression exp, Type retType, string functionName, bool withCast) { string dbTypeString = null; if (withCast == true) { Type unType = Utils.GetUnderlyingType(retType); if (CastTypeMap.TryGetValue(unType, out dbTypeString)) { generator._sqlBuilder.Append("CAST("); } } generator._sqlBuilder.Append(functionName, "("); exp.Accept(generator); generator._sqlBuilder.Append(")"); if (dbTypeString != null) { generator._sqlBuilder.Append(" AS ", dbTypeString, ")"); } }
static void AppendAggregateFunction(SqlGenerator generator, DbExpression exp, Type retType, string functionName, bool withCast) { string dbTypeString = null; if (withCast == true) { Type underlyingType = ReflectionExtension.GetUnderlyingType(retType); if (underlyingType != PublicConstants.TypeOfDecimal /* We don't know the precision and scale,so,we can not cast exp to decimal,otherwise maybe cause problems. */ && CastTypeMap.TryGetValue(underlyingType, out dbTypeString)) { generator._sqlBuilder.Append("CAST("); } } generator._sqlBuilder.Append(functionName, "("); exp.Accept(generator); generator._sqlBuilder.Append(")"); if (dbTypeString != null) { generator._sqlBuilder.Append(" AS ", dbTypeString, ")"); } }