public static bool GetSqlExtensionMethodCallConstant(ITranslator translator, MethodCallExpression methodExpression, Parameters parameters, out string concat) { if (methodExpression.Method.Name == "Min" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { concat = string.Concat("MIN(", GetStringForExpression(translator, methodExpression.Arguments[0], parameters), ")"); return(true); } if (methodExpression.Method.Name == "Max" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { concat = string.Concat("MAX(", GetStringForExpression(translator, methodExpression.Arguments[0], parameters), ")"); return(true); } if (methodExpression.Method.Name == "Sum" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { concat = string.Concat("SUM(", GetStringForExpression(translator, methodExpression.Arguments[0], parameters), ")"); return(true); } if (methodExpression.Method.Name == "As" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { var aliasFormat = translator.GetAliasFormat(); var alias = string.Format(aliasFormat, Convert.ToString(methodExpression.Arguments[1]).Replace("\"", "").Replace("'", "")); concat = string.Concat(GetStringForExpression(translator, methodExpression.Arguments[0], parameters), " AS ", alias); return(true); } if (methodExpression.Method.Name == "Between" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { concat = string.Concat("(", GetStringForExpression(translator, methodExpression.Arguments[0], parameters), " BETWEEN ", GetStringForExpression(translator, methodExpression.Arguments[1], parameters), " AND ", GetStringForExpression(translator, methodExpression.Arguments[2], parameters), ")"); return(true); } if (methodExpression.Method.Name == "In" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { concat = string.Concat("(", GetStringForExpression(translator, methodExpression.Arguments[0], parameters), " IN (", GetStringForExpression(translator, methodExpression.Arguments[1], parameters), "))"); return(true); } if (methodExpression.Method.Name == "Like" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { concat = string.Concat("(", GetStringForExpression(translator, methodExpression.Arguments[0], parameters), " LIKE ", GetStringForExpression(translator, methodExpression.Arguments[1], parameters), ")"); return(true); } if (methodExpression.Method.Name == "TrimSql" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { concat = string.Concat("LTRIM(RTRIM(", GetStringForExpression(translator, methodExpression.Arguments[0], parameters), "))"); return(true); } if (methodExpression.Method.Name == "Length" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { var lengthName = translator.GetLengthFunctionName(); concat = string.Concat(lengthName, "(", GetStringForExpression(translator, methodExpression.Arguments[0], parameters), ")"); return(true); } if (methodExpression.Method.Name == "Upper" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { concat = string.Concat("UPPER(", GetStringForExpression(translator, methodExpression.Arguments[0], parameters), ")"); return(true); } if (methodExpression.Method.Name == "Lower" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { concat = string.Concat("LOWER(", GetStringForExpression(translator, methodExpression.Arguments[0], parameters), ")"); return(true); } if (methodExpression.Method.Name == "IsNull" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { var isNullName = translator.GetIsNullFunctionName(); concat = string.Concat(isNullName, "(", GetStringForExpression(translator, methodExpression.Arguments[0], parameters), ",", GetStringForExpression(translator, methodExpression.Arguments[1], parameters), ")"); return(true); } if (methodExpression.Method.Name == "Cast" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { var returnDbType = TableDefinition.GetTypeForProperty(methodExpression.Method.ReturnType); concat = string.Concat("CAST(", GetStringForExpression(translator, methodExpression.Arguments[0], parameters), " AS ", translator.GetTextFor(new FieldDefinition { Type = returnDbType }, true), ")"); return(true); } if (methodExpression.Method.Name == "Average" && methodExpression.Method.ReflectedType.Name == "SqlExtensions") { concat = string.Concat("AVG(", GetStringForExpression(translator, methodExpression.Arguments[0], parameters), ")"); return(true); } concat = ""; return(false); }