diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable.cs index 5294b4037..ac160ba42 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSeverTest/UnitTest/UQueryable.cs @@ -102,6 +102,21 @@ namespace OrmTest a = string.IsNullOrEmpty(it.Name) }).ToList(); + var blist4 = Db.Queryable().Select(it => new BoolTest3() + { + a = SqlFunc.IIF(it.a == true, true, false) + }).ToList(); + + + var blist5 = Db.Queryable().Select(it => new BoolTest3() + { + a = SqlFunc.IF(it.a == true).Return(true).End(false) + }).ToList(); + + var blist6 = Db.Queryable().Select(it => new BoolTest3() + { + a =it.a==true?true:false + }).ToList(); var db = Db; db.CodeFirst.InitTables(); db.Deleteable().ExecuteCommand(); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs index ee05afd98..3dbad127d 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs @@ -477,19 +477,19 @@ namespace SqlSugar { asName = GetAsNameAndShortName(item, shortName, property); } - else + else { asName = GetAsName(item, shortName, property); } } } - else if (item.Type == UtilConstants.BoolType && item is MethodCallExpression) + else if (item.Type == UtilConstants.BoolType && item is MethodCallExpression && IsNotCaseExpression(item)) { this.Expression = item; this.Start(); var sql= this.Context.DbMehtods.IIF(new MethodCallExpressionModel() { - Args=new List() { + Args=new List() { new MethodCallExpressionArgs() { IsMember=true, MemberName=parameter.CommonTempData.ObjToString() @@ -518,6 +518,22 @@ namespace SqlSugar } } + private static bool IsNotCaseExpression(Expression item) + { + if ((item as MethodCallExpression).Method.Name == "IIF") + { + return false; + } + else if ((item as MethodCallExpression).Method.Name == "End"&&item.ToString().Contains("IF(")) + { + return false; + } + else + { + return true; + } + } + private Dictionary GetMappingColumns(Expression currentExpression) { Dictionary result = new Dictionary();