Skip to content

Commit a8d4706

Browse files
committed
BETWEEN Support
1 parent fd7e099 commit a8d4706

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

src/FirebirdSql.EntityFrameworkCore.Firebird/Query/Internal/FbQuerySqlGenerator.cs

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -143,17 +143,23 @@ protected override Expression VisitSqlBinary(SqlBinaryExpression sqlBinaryExpres
143143
Sql.Append(")");
144144
return sqlBinaryExpression;
145145
}
146-
else
146+
else if (sqlBinaryExpression.OperatorType == ExpressionType.AndAlso)
147147
{
148-
return base.VisitSqlBinary(sqlBinaryExpression);
149-
}
150-
151-
void BooleanToIntegralAndVisit(SqlExpression expression)
152-
{
153-
Sql.Append("IIF(");
154-
Visit(expression);
155-
Sql.Append(", 1, 0)");
148+
if (sqlBinaryExpression.Left is SqlBinaryExpression left &&
149+
sqlBinaryExpression.Right is SqlBinaryExpression right &&
150+
left.OperatorType == ExpressionType.GreaterThanOrEqual &&
151+
right.OperatorType == ExpressionType.LessThanOrEqual &&
152+
left.Left.Equals(right.Left))
153+
{
154+
Visit(left.Left);
155+
Sql.Append(" BETWEEN ");
156+
Visit(left.Right);
157+
Sql.Append(" AND ");
158+
Visit(right.Right);
159+
return sqlBinaryExpression;
160+
}
156161
}
162+
return base.VisitSqlBinary(sqlBinaryExpression);
157163
}
158164

159165
protected override Expression VisitSqlParameter(SqlParameterExpression sqlParameterExpression)
@@ -413,4 +419,11 @@ void GenerateList<T>(IReadOnlyList<T> items, Action<T> generationAction, Action<
413419
generationAction(items[i]);
414420
}
415421
}
422+
423+
void BooleanToIntegralAndVisit(SqlExpression expression)
424+
{
425+
Sql.Append("IIF(");
426+
Visit(expression);
427+
Sql.Append(", 1, 0)");
428+
}
416429
}

0 commit comments

Comments
 (0)