コード例 #1
0
        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;
        }
コード例 #2
0
    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);
    }