And() public static method

public static And ( SqlExpression left, SqlExpression right ) : SqlBinaryExpression
left SqlExpression
right SqlExpression
return SqlBinaryExpression
コード例 #1
0
        public static void PrepareFromSqlQuery()
        {
            var sqlQuery = new SqlQuery("SELECT * FROM table1 WHERE a = ? AND b = ?", SqlQueryParameterNaming.Marker);

            sqlQuery.Parameters.Add(new SqlQueryParameter(PrimitiveTypes.Integer(), (SqlNumber)2));
            sqlQuery.Parameters.Add(new SqlQueryParameter(PrimitiveTypes.Integer(), (SqlNumber)1023));

            var preparer = sqlQuery.ExpressionPreparer;

            var queryExp = new SqlQueryExpression();

            queryExp.From.Table(new ObjectName("table1"));
            queryExp.Items.Add(SqlExpression.Reference(new ObjectName("*")));
            queryExp.Where = SqlExpression.And(
                SqlExpression.Equal(SqlExpression.Reference(new ObjectName("a")), SqlExpression.Parameter()),
                SqlExpression.Equal(SqlExpression.Reference(new ObjectName("b")), SqlExpression.Parameter()));

            var prepared = queryExp.Prepare(preparer);

            Assert.IsType <SqlQueryExpression>(prepared);

            var sb = new SqlStringBuilder();

            sb.AppendLine("SELECT *");
            sb.AppendLine("  FROM table1");
            sb.Append("  WHERE a = 2 AND b = 1023");

            var expectString = sb.ToString();

            Assert.Equal(expectString, prepared.ToString());
        }
コード例 #2
0
        public void NumericAnd(long a, long b, long expected)
        {
            var exp1  = SqlExpression.Constant(Field.Number(new SqlNumber(a)));
            var exp2  = SqlExpression.Constant(Field.Number(new SqlNumber(b)));
            var orExp = SqlExpression.And(exp1, exp2);

            SqlExpression resultExp = null;

            Assert.DoesNotThrow(() => resultExp = orExp.Evaluate());
            Assert.IsNotNull(resultExp);
            Assert.IsInstanceOf <SqlConstantExpression>(resultExp);

            var constExp = (SqlConstantExpression)resultExp;

            Assert.IsNotNull(constExp.Value.Value);
            Assert.IsInstanceOf <NumericType>(constExp.Value.Type);
            Assert.IsInstanceOf <SqlNumber>(constExp.Value.Value);

            var actual         = ((SqlNumber)constExp.Value.Value);
            var expectedResult = new SqlNumber(expected);

            Assert.AreEqual(expectedResult, actual);
        }
コード例 #3
0
        public void BooleanAnd(bool a, bool b, bool expected)
        {
            var exp1   = SqlExpression.Constant(Field.Boolean(new SqlBoolean(a)));
            var exp2   = SqlExpression.Constant(Field.Boolean(new SqlBoolean(b)));
            var andExp = SqlExpression.And(exp1, exp2);

            SqlExpression resultExp = null;

            Assert.DoesNotThrow(() => resultExp = andExp.Evaluate());
            Assert.IsNotNull(resultExp);
            Assert.IsInstanceOf <SqlConstantExpression>(resultExp);

            var constExp = (SqlConstantExpression)resultExp;

            Assert.IsNotNull(constExp.Value.Value);
            Assert.IsInstanceOf <BooleanType>(constExp.Value.Type);
            Assert.IsInstanceOf <SqlBoolean>(constExp.Value.Value);

            var actual         = ((SqlBoolean)constExp.Value.Value);
            var expectedResult = new SqlBoolean(expected);

            Assert.AreEqual(expectedResult, actual);
        }