public void CreateIfThenElseNull() { var result = SqlCaseExpression.CreateIfThenElseNull(typeof(int?), _predicate1, _value1, _value2); Assert.That(result.Cases, Has.Count.EqualTo(2)); Assert.That(result.Cases[0].When, Is.SameAs(_predicate1)); Assert.That(result.Cases[0].Then, Is.SameAs(_value1)); SqlExpressionTreeComparer.CheckAreEqualTrees(result.Cases[1].When, Expression.Not(_predicate1)); Assert.That(result.Cases[1].Then, Is.SameAs(_value2)); SqlExpressionTreeComparer.CheckAreEqualTrees(result.ElseCase, Expression.Constant(null, typeof(int?))); }
private Expression CreateValueExpressionForPredicate(Expression predicate) { // If the predicate is nullable, we have three cases (true, false, null). Otherweise, we just have two cases. if (predicate.Type == typeof(bool?)) { return(SqlCaseExpression.CreateIfThenElseNull(typeof(int?), predicate, new SqlLiteralExpression(1), new SqlLiteralExpression(0))); } else { return(SqlCaseExpression.CreateIfThenElse(typeof(int), predicate, new SqlLiteralExpression(1), new SqlLiteralExpression(0))); } }