Skip to content

Commit 1956366

Browse files
authored
fixing issue with multiple where predicates paired with a select (#493)
1 parent cc3eafb commit 1956366

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/Redis.OM/Common/ExpressionTranslator.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ internal static RedisQuery BuildQueryFromExpression(Expression expression, Type
229229
query.GeoFilter = ExpressionParserUtilities.TranslateGeoFilter(exp);
230230
break;
231231
case "Where":
232-
query.QueryText = TranslateWhereMethod(exp, parameters);
232+
query.QueryText = query.QueryText == "*" ? TranslateWhereMethod(exp, parameters) : $"({TranslateWhereMethod(exp, parameters)} {query.QueryText})";
233233
break;
234234
case "NearestNeighbors":
235235
query.NearestNeighbors = ParseNearestNeighborsFromExpression(exp);

test/Redis.OM.Unit.Tests/RediSearchTests/SearchTests.cs

+20
Original file line numberDiff line numberDiff line change
@@ -3325,6 +3325,26 @@ public void TestSelectWithWhere()
33253325
"Name");
33263326
}
33273327

3328+
[Fact]
3329+
public void TestSelectWithMultipleWheres()
3330+
{
3331+
_substitute.ClearSubstitute();
3332+
_substitute.Execute(Arg.Any<string>(), Arg.Any<object[]>()).Returns(_mockReply);
3333+
IRedisCollection<Person> collection = new RedisCollection<Person>(_substitute);
3334+
collection = collection.Where(x => x.Name == "Steve");
3335+
_ = collection.Where(x => x.Age == 33).Select(x => x.Name).ToList();
3336+
_substitute.Received().Execute(
3337+
"FT.SEARCH",
3338+
"person-idx",
3339+
"((@Name:\"Steve\") (@Age:[33 33]))",
3340+
"LIMIT",
3341+
"0",
3342+
"100",
3343+
"RETURN",
3344+
"1",
3345+
"Name");
3346+
}
3347+
33283348
[Fact]
33293349
public void TestNullableEnumQueries()
33303350

0 commit comments

Comments
 (0)