private string ParMethodTo(string methodName, MethodCallExpression mce, ref MemberType type)
{
//参数函数
MemberType rightType = MemberType.None;
object right =null;
if (mce.Arguments.IsValuable() && !methodName.IsIn("AddDays", "AddYears", "AddMonths"))
{
right = CreateSqlElements(mce.Arguments[0], ref rightType, true);
}
else {
right = CreateSqlElements(mce.Object, ref rightType, true);
}
Check.Exception(rightType != MemberType.Value, string.Format(ExpMethodError2, methodName));
string value = string.Empty;
if (mce.Arguments.IsValuable())
{
value = right.ToString();
}
else
{
value = MethodToString(methodName, mce, ref type); ;
}
if (methodName.IsIn("AddDays", "AddYears", "AddMonths"))
{
if (value.IsValuable())
{
var parValue = CreateSqlElements(mce.Arguments[0], ref rightType, true).ObjToInt();
switch (methodName)
{
case "AddDays": value = value.ObjToDate().AddDays(parValue).ObjToString(); break;
case "AddYears": value = value.ObjToDate().AddYears(parValue).ObjToString(); break;
case "AddMonths": value = value.ObjToDate().AddMonths(parValue).ObjToString(); break;
}
}
return value;
}
if (methodName == "ToDateTime" || methodName == "ObjToDate")
{
return Convert.ToDateTime(value).ToString();
}
else if (methodName.StartsWith("ToInt"))
{
return Convert.ToInt32(value).ToString();
}
else if (methodName.StartsWith("Trim"))
{
return (value.ObjToString()).Trim();
}
else if (methodName.StartsWith("ObjTo"))
{
return value;
}
else if (methodName == "ToLower") {
if (value == null) return value;
else
return value.ToLower();
}
else if (methodName == "ToUpper")
{
if (value == null) return value;
else
return value.ToUpper();
}
else
{
throw new SqlSugarException("不支持当前函数:" + methodName + "\r\n" + ResolveExpress.ExpToSqlError);
}
}