Skip to content

Commit 20f2fb5

Browse files
committed
Parse in operator before and/or
1 parent 2aee0be commit 20f2fb5

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/System.Linq.Dynamic.Core/Parser/ExpressionParser.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ Expression ParseAndOperator()
283283
{
284284
Token op = _textParser.CurrentToken;
285285
_textParser.NextToken();
286-
Expression right = ParseComparisonOperator();
286+
Expression right = ParseIn();
287287
CheckAndPromoteOperands(typeof(ILogicalSignatures), op.Id, op.Text, ref left, ref right, op.Pos);
288288
left = Expression.AndAlso(left, right);
289289
}

test/System.Linq.Dynamic.Core.Tests/Parser/ExpressionParserTests.cs

+14
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,20 @@ public void Parse_ParseAndOperator(string expression, string result)
9393
Check.That(parsedExpression).Equals(result);
9494
}
9595

96+
[Fact]
97+
public void Parse_ParseMultipleInOperators()
98+
{
99+
// Arrange
100+
ParameterExpression[] parameters = { ParameterExpressionHelper.CreateParameterExpression(typeof(Company), "x") };
101+
var sut = new ExpressionParser(parameters, "MainCompanyId in (1, 2) and Name in (\"A\", \"B\")", null, null);
102+
103+
// Act
104+
var parsedExpression = sut.Parse(null).ToString();
105+
106+
// Assert
107+
Check.That(parsedExpression).Equals("(((x.MainCompanyId == 1) OrElse (x.MainCompanyId == 2)) AndAlso ((x.Name == \"A\") OrElse (x.Name == \"B\")))");
108+
}
109+
96110
[Theory]
97111
[InlineData("string(\"\")", "")]
98112
[InlineData("string(\"a\")", "a")]

0 commit comments

Comments
 (0)