Expression MakeSqlValue(Expression exp) { if (exp == null) return null; if (!inSql || !IsBooleanExpression(exp)) return exp; if (exp.NodeType == ExpressionType.Constant) { switch (((bool?)((ConstantExpression)exp).Value)) { case false: return new SqlConstantExpression(0, exp.Type); case true: return new SqlConstantExpression(1, exp.Type); case null: return new SqlConstantExpression(null, exp.Type); } throw new InvalidOperationException("Entity"); } if (!IsSqlCondition(exp)) return exp; var result = new CaseExpression(new[] { new When(exp, new SqlConstantExpression(true)) }, new SqlConstantExpression(false)); return exp.Type.IsNullable() ? result.Nullify() : result; }
Expression?MakeSqlValue(Expression?exp) { if (exp == null) { return(null !); } if (!inSql || !IsBooleanExpression(exp)) { return(exp); } if (exp.NodeType == ExpressionType.Constant) { switch (((bool?)((ConstantExpression)exp).Value)) { case false: return(new SqlConstantExpression(0, exp.Type)); case true: return(new SqlConstantExpression(1, exp.Type)); case null: return(new SqlConstantExpression(null, exp.Type)); } } if (!IsSqlCondition(exp)) { return(exp); } var result = new CaseExpression(new[] { new When(exp, new SqlConstantExpression(true)) }, new SqlConstantExpression(false)); return(exp.Type.IsNullable() ? result.Nullify() : result); }