From d0d17366a7b6c8ca3733add8fef6b6a97ad54a6f Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Mon, 12 Jun 2017 18:19:18 +0800 Subject: [PATCH] - --- SqlServerTest/Demos/Query.cs | 2 ++ SqlServerTest/UnitTest/ExpressionTest/Method.cs | 16 +++++++++------- SqlSugar/ExpressionsToSql/Method/SqlFunc.cs | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/SqlServerTest/Demos/Query.cs b/SqlServerTest/Demos/Query.cs index c5fdef488..c41fa7c82 100644 --- a/SqlServerTest/Demos/Query.cs +++ b/SqlServerTest/Demos/Query.cs @@ -119,6 +119,8 @@ namespace OrmTest.Demo { var db = GetInstance(); var getAll = db.Queryable().ToList(); + var getId = db.Queryable().Select(it => it.Id).ToList(); + // var getIdIIF= db.Queryable().Select(it =>new { id = SqlFunc.IIF(it.Id == 0, 1, it.Id) }).ToList(); var getAllNoLock = db.Queryable().With(SqlWith.NoLock).ToList(); var getByPrimaryKey = db.Queryable().InSingle(2); var getSingleOrDefault = db.Queryable().Single(); diff --git a/SqlServerTest/UnitTest/ExpressionTest/Method.cs b/SqlServerTest/UnitTest/ExpressionTest/Method.cs index ab9658f73..abf5c9267 100644 --- a/SqlServerTest/UnitTest/ExpressionTest/Method.cs +++ b/SqlServerTest/UnitTest/ExpressionTest/Method.cs @@ -497,32 +497,34 @@ namespace OrmTest.UnitTest private void IIF() { - Expression> exp = it => SqlFunc.IIF(it.Id == 1, 1, 2); + Expression> exp = it => SqlFunc.IIF(it.Id == 1, 1, 2)==1; SqlServerExpressionContext expContext = new SqlServerExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "( CASE WHEN ( [Id] = @Id1 ) THEN @MethodConst2 ELSE @MethodConst3 END )", new List() + base.Check(value, pars, "(( CASE WHEN ( [Id] = @Id1 ) THEN @MethodConst2 ELSE @MethodConst3 END ) = @Const4 )", new List() { new SugarParameter("@Id1",1), new SugarParameter("@MethodConst2",1), - new SugarParameter("@MethodConst3",2) + new SugarParameter("@MethodConst3",2), + new SugarParameter("@Const4",1) }, "IIF error"); } private void IIF2() { - Expression> exp = it => SqlFunc.IIF(SqlFunc.Contains(it.Name,"a"), 1, 2); + Expression> exp = it => SqlFunc.IIF(SqlFunc.Contains(it.Name,"a"), 1, 2)==1; SqlServerExpressionContext expContext = new SqlServerExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "( CASE WHEN ([Name] like '%'+@MethodConst1+'%') THEN @MethodConst2 ELSE @MethodConst3 END )", new List() + base.Check(value, pars, "(( CASE WHEN ([Name] like '%'+@MethodConst1+'%') THEN @MethodConst2 ELSE @MethodConst3 END ) = @Const4 )", new List() { new SugarParameter("@MethodConst1","a"), new SugarParameter("@MethodConst2",1), - new SugarParameter("@MethodConst3",2) - }, "IIF error"); + new SugarParameter("@MethodConst3",2), + new SugarParameter("@Const4",1) + }, "IIF2 error"); } } } diff --git a/SqlSugar/ExpressionsToSql/Method/SqlFunc.cs b/SqlSugar/ExpressionsToSql/Method/SqlFunc.cs index a6a0c5af6..da31202a3 100644 --- a/SqlSugar/ExpressionsToSql/Method/SqlFunc.cs +++ b/SqlSugar/ExpressionsToSql/Method/SqlFunc.cs @@ -66,7 +66,7 @@ namespace SqlSugar public static DateTime DateAdd(DateTime date, int addValue) { throw new NotSupportedException("This method is not supported by the current parameter"); } public static int DateValue(DateTime date, DateType dataType) { throw new NotSupportedException("This method is not supported by the current parameter"); } public static bool Between(object value, object start, object end) { throw new NotSupportedException("This method is not supported by the current parameter"); } - public static bool IIF(bool Expression, object thenValue, object elseValue) { throw new NotSupportedException("This method is not supported by the current parameter"); } + public static TResult IIF(bool Expression, TResult thenValue, TResult elseValue) { throw new NotSupportedException("This method is not supported by the current parameter"); } public static int ToInt32(object value) { return value.ObjToInt(); } public static long ToInt64(object value) { return Convert.ToInt64(value); } public static DateTime ToDate(object value) { return value.ObjToDate(); }